在開發(fā)時有時候需要在整個應(yīng)用開始運行時執(zhí)行一些特定代碼,比如初始化環(huán)境,準備測試數(shù)據(jù)等等。
在spring中可以通過applicationlistener來實現(xiàn)相關(guān)的功能,不過在配合spring boot使用時就稍微有些區(qū)別了。
創(chuàng)建applicationlistener
這里以填充部分測試數(shù)據(jù)為例子,首先實現(xiàn)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); } } |
這類并不會自動執(zhí)行,需要我們注冊。
硬編碼注冊
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); } } |
硬編碼的弊端在于無法區(qū)別環(huán)境,當我們需要部署應(yīng)用到生產(chǎn)環(huán)境時需要修改代碼。
配置文件
spring boot支持profiles模式,在application.properties中配置
1
|
spring.profiles.active=dev |
然后在application-dev.properties中配置開發(fā)環(huán)境的參數(shù)。
增加一個配置來注冊自定義的監(jiān)聽器
1
|
context.listener.classes=cn.acgmo.applicationstartup |
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/xiaoyu411502/article/details/51396568