
io.github.jhipster.loaded.JHipsterPluginManagerReloadPlugin Maven / Gradle / Ivy
package io.github.jhipster.loaded;
import io.github.jhipster.loaded.reloader.Reloader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ConfigurableApplicationContext;
import org.springsource.loaded.Plugins;
import org.springsource.loaded.ReloadEventProcessorPlugin;
import java.util.Collection;
/**
* Automatically re-configures classes when Spring Loaded triggers a hot reload event.
*
*
* Supported technologies are
*
* - Spring: dependency injection and the post-construct hook are triggered
* - Jackson: the serializer and deserializer caches are invalidated on JPA beans and DTOs
*
*
*
* To have Spring Loaded working, run your Application class with these VM options:
* "-javaagent:spring_loaded/springloaded-jhipster.jar -noverify "
*
*/
public class JHipsterPluginManagerReloadPlugin implements ReloadEventProcessorPlugin {
private final Logger log = LoggerFactory.getLogger(JHipsterPluginManagerReloadPlugin.class);
private static JHipsterReloaderThread jHipsterReloaderThread;
private String projectPackageName;
public JHipsterPluginManagerReloadPlugin(ConfigurableApplicationContext ctx) {
projectPackageName = ctx.getEnvironment().getProperty("hotReload.package.project");
}
@Override
public boolean shouldRerunStaticInitializer(String typename, Class> aClass, String encodedTimestamp) {
return true;
}
public void reloadEvent(String typename, Class> clazz, String encodedTimestamp) {
if (!typename.startsWith(projectPackageName)) {
log.trace("This class is not in the application package, nothing to do");
return;
}
if (typename.contains("$$EnhancerBy") || typename.contains("$$FastClassBy")) {
log.trace("This is a CGLIB proxy, nothing to do");
return;
}
jHipsterReloaderThread.reloadEvent(typename, clazz);
}
public static void register(ConfigurableApplicationContext ctx, Collection reloaders, ClassLoader classLoader) {
jHipsterReloaderThread = new JHipsterReloaderThread(ctx, reloaders);
JHipsterReloaderThread.register(jHipsterReloaderThread);
JHipsterFileSystemWatcher.register(classLoader, ctx);
Plugins.registerGlobalPlugin(new JHipsterPluginManagerReloadPlugin(ctx));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy