我将Springboot用于我的应用程序模块。所以整个应用程序包含一堆独立的Springboot模块,可以同时启动,如下所示:
@Configuration
@EnableAutoConfiguration
@Import({A.class, B.class, C.class})
public class Starter{
public static void main(String[] args){
SpringApplication.run(Starter.class);
}
}
A.java,B.java和C.java中的每一个都是Spring配置文件,包含各个模块的bean definations。 Starter应该基本上一起运行它们,这可以按预期工作。
然而,问题是类A,B和C具有内部依赖性。例如,只有在完全加载了A.java的所有bean之后才开始使用B.java(不仅仅是初始化)。类似地,只有在完全处理和加载来自B.java的所有bean之后,才应启动C.java。
为了捕获上述场景,我正在添加ApplicationPreparedEvent侦听器,以便在为每个模块完全加载特定类时捕获,但此事件永远不会被抛出。我也尝试过使用ApplicationReadyEvent,ContextRefreshed / ContextStarted事件,但是无法实现上面的加载顺序。我正在关注http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-application-events-and-listeners
上的Springboot文档任何解决此问题的想法都会有所帮助。谢谢。