詳解spring boot容器加載完后執(zhí)行特定操作
有時(shí)候我們需要在spring boot容器啟動(dòng)并加載完后,開一些線程或者一些程序來(lái)干某些事情。這時(shí)候我們需要配置ContextRefreshedEvent事件來(lái)實(shí)現(xiàn)我們要做的事情
1、ApplicationStartup類
public class ApplicationStartup implements ApplicationListener<ContextRefreshedEvent>{
public void onApplicationEvent(ContextRefreshedEvent event)
{
//在容器加載完畢后獲取dao層來(lái)操作數(shù)據(jù)庫(kù)
OSSVideoRepository ossVideoRepository = (OSSVideoRepository)event.getApplicationContext().getBean(OSSVideoRepository.class);
//在容器加載完畢后獲取配置文件中的配置
ServerConfig serverConfig = (ServerConfig)event.getApplicationContext().getBean(ServerConfig.class);
ServerFileScanner fileScanner = new ServerFileScanner(
ossVideoRepository, serverConfig.getScanpath());
//在容器加載完畢后啟動(dòng)線程
Thread thread = new Thread(fileScanner);
thread.start();
}
}
2、ServerConfig 類
@Component
@ConfigurationProperties(prefix = "server")
public class ServerConfig {
private String aliyunossEndpoint;
private String aliyunossAccessKeyId;
private String aliyunossAccessKeySecret;
private String aliyunossBucketName;
private String scanpath;
public String getAliyunossEndpoint() {
return aliyunossEndpoint;
}
public void setAliyunossEndpoint(String aliyunossEndpoint) {
this.aliyunossEndpoint = aliyunossEndpoint;
}
public String getAliyunossAccessKeyId() {
return aliyunossAccessKeyId;
}
public void setAliyunossAccessKeyId(String aliyunossAccessKeyId) {
this.aliyunossAccessKeyId = aliyunossAccessKeyId;
}
public String getAliyunossAccessKeySecret() {
return aliyunossAccessKeySecret;
}
public void setAliyunossAccessKeySecret(String aliyunossAccessKeySecret) {
this.aliyunossAccessKeySecret = aliyunossAccessKeySecret;
}
public String getAliyunossBucketName() {
return aliyunossBucketName;
}
public void setAliyunossBucketName(String aliyunossBucketName) {
this.aliyunossBucketName = aliyunossBucketName;
}
public String getScanpath() {
return scanpath;
}
public void setScanpath(String scanpath) {
this.scanpath = scanpath;
}
}
PS:還有一些spring內(nèi)置的事件
1、 ContextRefreshedEvent:ApplicationContext容器初始化或者刷新時(shí)觸發(fā)該事件。
2、 ContextStartedEvent:當(dāng)使用ConfigurableApplicationContext接口的start()方法啟動(dòng)ApplicationContext容器時(shí)觸發(fā)該事件。
3、 ContextClosedEvent:當(dāng)使用ConfigurableApplicationContext接口的close()方法關(guān)閉ApplicationContext容器時(shí)觸發(fā)該事件。
4、 ContextStopedEvent: 當(dāng)使用ConfigurableApplicationContext接口的stop()方法停止ApplicationContext容器時(shí)觸發(fā)該事件。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot實(shí)現(xiàn)多文件上傳代碼解析
這篇文章主要介紹了Springboot實(shí)現(xiàn)多文件上傳代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
通過(guò)Java實(shí)現(xiàn)bash命令過(guò)程解析
這篇文章主要介紹了通過(guò)Java實(shí)現(xiàn)bash命令過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
詳解Java繼承中屬性、方法和對(duì)象的關(guān)系
這篇文章主要幫助大家詳細(xì)介紹了Java繼承中屬性、方法和對(duì)象的關(guān)系,感興趣的朋友可以參考一下2016-03-03

