SpringBoot初始化时Do something的六种实现
一,使用注解@PostConstruct
@Component
public class TestPostConstruct {
@PostConstruct
private void init(){
System.out.println("-----------------PostConstruct初始化启动成功-----------------");
}
}
二,使用注解@Bean(initMethod="")
@Configuration
public class TestBean {
@Bean(initMethod = "init")
public TestB testB(){
return new TestB();
}
class TestB{
private void init(){
System.out.println("-----------------Bean初始化启动成功-----------------");
}
}
}
三,实现InitializingBean
@Component
public class TestInitializingBean implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("-----------------InitializingBean初始化启动成功-----------------");
}
}
四,实现CommandLineRunner
@Component
public class TestCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("-----------------CommandLineRunner初始化启动成功-----------------");
}
}
五,实现ApplicationRunner
@Component
public class TestApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("-----------------ApplicationRunner初始化启动成功-----------------");
}
}
六,实现ApplicationListener
@Component
public class TestApplicationListener implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
System.out.println("-----------------ApplicationListener初始化启动成功-----------------");
}
}
初始化顺序比较
InitializingBean 快于 @PostConstruct 快于 @Bean 快于 ApplicationListener 快于 ApplicationRunner 快于 CommandLineRunner