1.在启动类下执行方法
启动类:应用程序启动时,会首先执行启动类中的主方法,即public static void main(String[] args)。
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
//TODO 执行初始化方法
}
}
2.使用@PostConstruct注解
使用@PostConstruct注解:标注有@PostConstruct注解的方法会在bean初始化之后立即执行。
@Component
public class InitStart {
@PostConstruct
public void run() {
//TODO 执行初始化方法
}
}
3.实现CommandLineRunner接口
实现CommandLineRunner接口:如果有实现CommandLineRunner接口的Bean,也会在Spring Boot应用程序启动后立即执行run()方法。与ApplicationRunner的区别在于,CommandLineRunner接口的run()方法接收String数组作为参数,可以用于接收命令行参数。
@Component
public class InitStart implements CommandLineRunner {
@Override
public void run(String... args) {
//TODO 执行初始化方法
}
}
4.实现ApplicationRunner接口
实现ApplicationRunner接口:如果有实现ApplicationRunner接口的Bean,会在Spring Boot应用程序启动后立即执行run()方法。
@Component
public class InitStart implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
//TODO 执行初始化方法
}
}
5.实现ApplicationListener接口
实现ApplicationListener接口:如果有实现ApplicationListener接口的Bean,并监听ApplicationReadyEvent事件,在应用程序准备完毕后会执行onApplicationEvent()方法,即应用程序启动完成后执行。
@Component
public class InitStart implements ApplicationListener<ApplicationStartedEvent> {
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
//TODO 执行初始化方法
}
}
6.实现InitializingBean接口
实现InitializingBean接口:如果某个Bean实现了InitializingBean接口,会在所有Bean的依赖关系注入完成之后,调用afterPropertiesSet()方法。
@Component
public class InitStart implements InitializingBean {
@Override
public void afterPropertiesSet() {
//TODO 执行初始化方法
}
}
方式还有很多比如拦截器,定时任务等,选择自己合适的就行,