在Spring Boot啟動後執行指定程式碼
阿新 • • 發佈:2019-01-05
在開發時有時候需要在整個應用開始執行時執行一些特定程式碼,比如初始化環境,準備測試資料等等。
在Spring中可以通過ApplicationListener來實現相關的功能,不過在配合Spring Boot使用時就稍微有些區別了。
建立ApplicationListener
這裡以填充部分測試資料為例子,首先實現ApplicationStartup
類。
12345678 | publicclassApplicationStartupimplementsApplicationListener<ContextRefreshedEvent>{@OverridepublicvoidonApplicationEvent |
這類並不會自動執行,需要我們註冊。
硬編碼註冊
Spring Boot有一個類SpringApplication
,這個類是Spring Boot的入口,包含所有的配置。
1 2 3 4 5 6 7 8 9 10 |
@Configuration
@ComponentScan
@EnableAutoConfiguration
publicclassWebApplication{
publicstaticvoidmain(String[]args){
SpringApplication
springApplication=newSpringApplication(WebApplication.class);
springApplication.addListeners(newApplicationStartup());
springApplication |
硬編碼的弊端在於無法區別環境,當我們需要部署應用到生產環境時需要修改程式碼。
配置檔案
Spring Boot支援profiles模式,在application.properties
中配置
1 | spring.profiles.active=dev |
然後在application-dev.properties
中配置開發環境的引數。
增加一個配置來註冊自定義的監聽器
1 | context.listener.classes=cn.acgmo.ApplicationStartup |