Reload Spring configuration after class definition/change.
The plugin hooks for initialization into
DefaultListableBeanFactory which is the default bean factory for
all applicationContexts. This plugin should work for you if you use a standard Spring setup.
Currently only component scan and annotation config is supported (as it is the most common configuration). At least XML-based bean definition will be available in a near future as well. For more complex configuration reload any help is warmly welcomed :-).
Plugin supports reloading of all components registered by component scan (Spring classpath scanning documentation). For example:
Spring will scan package org.example at initialization and register all beans. HotswapAgent plugin will register events on the base package as well to catch any class reload or new class definition. After you reload a class or define a new class, the class is processed by Spring container as if it was discovered by standard scan process. If the bean was already registered in Spring bean registry, it is unregistered and all appropriate caches are reset.
The plugin is initialized in
DefaultListableBeanFactory constructor. Than
ClassPathBeanDefinitionScanner is patched
to hook into component scan process (actually
is enhanced to register hotswap reload and file creation events on basePackage path. After the event is fired,
a method similar to
org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan() is invoked. There
are two main differences - it scans only a single file and unregister bean definition from bean registry if required.
- Add reload of beans defined in a XML file
- … a lot to do …