1. 程式人生 > >在Spring Boot啟動後執行指定程式碼

在Spring Boot啟動後執行指定程式碼

在開發時有時候需要在整個應用開始執行時執行一些特定程式碼,比如初始化環境,準備測試資料等等。

在Spring中可以通過ApplicationListener來實現相關的功能,不過在配合Spring Boot使用時就稍微有些區別了。

建立ApplicationListener

這裡以填充部分測試資料為例子,首先實現ApplicationStartup類。

12345678publicclassApplicationStartupimplementsApplicationListener<ContextRefreshedEvent>{@OverridepublicvoidonApplicationEvent
(ContextRefreshedEvent event){SourceRepository sourceRepository=event.getApplicationContext().getBean(SourceRepository.class);Source je=newSource("justice_eternal吧","http://tieba.baidu.com/f?kw=justice_eternal");sourceRepository.save(je);}}

這類並不會自動執行,需要我們註冊。

硬編碼註冊

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
.run(args); } }

硬編碼的弊端在於無法區別環境,當我們需要部署應用到生產環境時需要修改程式碼。

配置檔案

Spring Boot支援profiles模式,在application.properties中配置

1spring.profiles.active=dev

然後在application-dev.properties中配置開發環境的引數。

增加一個配置來註冊自定義的監聽器

1 context.listener.classes=cn.acgmo.ApplicationStartup