Java 了解弹簧靴&x27;s应用程序生命周期和启动侦听器
在Sprint Boot 2.x中,我们可以使用以下两种方法之一初始化应用程序:Java 了解弹簧靴&x27;s应用程序生命周期和启动侦听器,java,spring-boot,Java,Spring Boot,在Sprint Boot 2.x中,我们可以使用以下两种方法之一初始化应用程序: @springboot应用程序 公共类MyApp{ 公共静态void main(字符串[]args){ 运行(MyApp.class,args); init(); } 私有void init(){ //从这里初始化应用程序。。。 } } 或者我们可以使用启动时执行的启动侦听器: 公共类StartupListener实现ApplicationListener{ @凌驾 ApplicationEvent(Contex
@springboot应用程序
公共类MyApp{
公共静态void main(字符串[]args){
运行(MyApp.class,args);
init();
}
私有void init(){
//从这里初始化应用程序。。。
}
}
或者我们可以使用启动时执行的启动侦听器:
公共类StartupListener实现ApplicationListener{
@凌驾
ApplicationEvent(ContextRefreshedEvent事件)上的公共无效{
//从这里初始化应用程序。。。
}
}
我想知道采取这两种方法存在哪些权衡。我对SpringBoot的“应用程序生命周期”了解不多,我想知道在这两种设置中是否有我可以/无法访问的内容。提前谢谢 仅在启动后调用
init
方法,并且仅在将应用程序作为命令行程序运行时调用该方法
例如,将应用程序部署为.war文件时,不会调用
init
方法
每当启动时都会调用onApplicationEvent的方法,该方法在启动期间确实发生,但稍后可以再次调用。参见例如“
对于与init
方法更相似的事件,请使用。您确定没有@PostConstruct
注释的init方法吗?@AlexeyUsharovski注意到init
方法是由main
方法显式调用的。如果是这样,我认为这不是初始化Spring boot应用程序的好方法。不知道run
方法何时返回。最好将init
公开,并用@PostConstruct
@AlexeyUsharovski注释您在这里谈论的run
方法是什么?SpringApplication.run