Skip to content

Instantly share code, notes, and snippets.

@nithril
Created February 8, 2014 10:17
Show Gist options
  • Save nithril/8881495 to your computer and use it in GitHub Desktop.
Save nithril/8881495 to your computer and use it in GitHub Desktop.
spring-loaded
@Override
public void reloadEvent(String typename, Class<?> clazz, String encodedTimestamp) {
log.info("typename=" + typename + "\nclazz=" + clazz.getName() + "\ntimestamp=" + encodedTimestamp);
if (!lastTimestamp.equals(encodedTimestamp)) {
log.info("Hot reloading in progress...");
lastTimestamp = encodedTimestamp;
CachedIntrospectionResults.clearClassLoader(clazz.getClassLoader());
Introspector.flushFromCaches(clazz);
DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) applicationContext.getBeanFactory();
Map<String,?> beans = applicationContext.getBeansOfType(clazz);
if (beans.size() == 0){
//new beans
RootBeanDefinition bd = new RootBeanDefinition(clazz, AbstractBeanDefinition.AUTOWIRE_BY_TYPE, true);
bd.setScope(BeanDefinition.SCOPE_SINGLETON);
beanFactory.registerBeanDefinition(clazz.getName() , bd);
beanFactory.getBean(clazz.getName());
}else{
for (Map.Entry entry : beans.entrySet()){
beanFactory.autowireBean(entry.getValue());
}
}
} else {
log.info("Already reloaded!!!");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment