在開發時有時候需要在整個應用開始運行時執行一些特定代碼,比如初始化環境,準備測試數據等等。
在spring中可以通過applicationlistener來實現相關的功能,不過在配合spring boot使用時就稍微有些區別了。
創建applicationlistener
這里以填充部分測試數據為例子,首先實現applicationstartup類。
1
2
3
4
5
6
7
8
|
publicclass applicationstartup implements applicationlistener<contextrefreshedevent> { @override publicvoidonapplicationevent(contextrefreshedevent event) { sourcerepository sourcerepository = event.getapplicationcontext().getbean(sourcerepository. class ); source je = new source( "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
11
12
13
14
15
16
17
18
19
20
21
|
@configuration @componentscan @enableautoconfiguration publicclass webapplication { publicstaticvoidmain(string[] args) { springapplication springapplication= new springapplication(webapplication. class ); springapplication.addlisteners( new applicationstartup()); springapplication.run(args); } } |
硬編碼的弊端在于無法區別環境,當我們需要部署應用到生產環境時需要修改代碼。
配置文件
spring boot支持profiles模式,在application.properties中配置
1
|
spring.profiles.active=dev |
然后在application-dev.properties中配置開發環境的參數。
增加一個配置來注冊自定義的監聽器
1
|
context.listener.classes=cn.acgmo.applicationstartup |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/xiaoyu411502/article/details/51396568