1、CommandLineRunner
2、ApplicationRunner
对比:
1)ApplicationRunner可以解析出命令行参数
2)ApplicationRunner的run方法声明throws Exception,抛出异常会终止启动
3)都可以使用@Order来指定顺序,并且共享order顺序
3、ApplicationListener
@Override
public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) {
log.info("MyApplicationListener is started up");
}
}
1)比本文其他的解决方案都后执行
2)@Order只与同类型的ApplicationListener来做排序
4、@PostConstruct
1)Spring 在创建完 bean之后 ,启动之前执行
2)可以使用@DependsOn 注解
5、InitializingBean
1)与 @PostConstruct 解决方案非常相似
2)顾名思义「在属性设置之后」,调用该方法时,该 bean 的所有属性已经被 Spring 填充。
3)比使用 @PostConstruct 更安全,因为使用@PostConstruct有可能@Autowired 字段未自动注入;但如果用构造函数注入,两者等效