詳解如何在Spring Boot啟動(dòng)后執(zhí)行指定代碼
在開(kāi)發(fā)時(shí)有時(shí)候需要在整個(gè)應(yīng)用開(kāi)始運(yùn)行時(shí)執(zhí)行一些特定代碼,比如初始化環(huán)境,準(zhǔn)備測(cè)試數(shù)據(jù)等等。
在Spring中可以通過(guò)ApplicationListener來(lái)實(shí)現(xiàn)相關(guān)的功能,不過(guò)在配合Spring Boot使用時(shí)就稍微有些區(qū)別了。
創(chuàng)建ApplicationListener
這里以填充部分測(cè)試數(shù)據(jù)為例子,首先實(shí)現(xiàn)ApplicationStartup類。
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);
}
}
這類并不會(huì)自動(dòng)執(zhí)行,需要我們注冊(cè)。
硬編碼注冊(cè)
Spring Boot有一個(gè)類SpringApplication,這個(gè)類是Spring Boot的入口,包含所有的配置。
@Configuration
@ComponentScan
@EnableAutoConfiguration
publicclass WebApplication
{
publicstaticvoidmain(String[] args)
{
SpringApplication springApplication=new SpringApplication(WebApplication.class);
springApplication.addListeners(new ApplicationStartup());
springApplication.run(args);
}
}
硬編碼的弊端在于無(wú)法區(qū)別環(huán)境,當(dāng)我們需要部署應(yīng)用到生產(chǎn)環(huán)境時(shí)需要修改代碼。
配置文件
Spring Boot支持profiles模式,在application.properties中配置
spring.profiles.active=dev
然后在application-dev.properties中配置開(kāi)發(fā)環(huán)境的參數(shù)。
增加一個(gè)配置來(lái)注冊(cè)自定義的監(jiān)聽(tīng)器
context.listener.classes=cn.acgmo.ApplicationStartup
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring容器的創(chuàng)建過(guò)程之如何注冊(cè)BeanPostProcessor詳解
關(guān)于BeanPostProcessor 各位一定不陌生,今天整理的這篇文章總結(jié)了如何注冊(cè)BeanPostProcessor,文中有非常詳細(xì)的圖文示例,需要的朋友可以參考下2021-06-06
Log4j關(guān)閉Spring和Hibernate日志打印方式
這篇文章主要介紹了Log4j關(guān)閉Spring和Hibernate日志打印方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
springboot開(kāi)啟Bean數(shù)據(jù)校驗(yàn)功能
這篇文章主要介紹了springboot開(kāi)啟Bean數(shù)據(jù)校驗(yàn)功能,通過(guò)啟用Bean屬性校驗(yàn)導(dǎo)入JSR303與Hibernate校驗(yàn)框架坐標(biāo),使用@Validated注解啟用校驗(yàn)功能,需要的朋友可以參考下2023-10-10
詳解springboot+mybatis多數(shù)據(jù)源最簡(jiǎn)解決方案
本篇文章主要介紹了詳解springboot+mybatis多數(shù)據(jù)源最簡(jiǎn)解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
Java實(shí)現(xiàn)時(shí)間與字符串互相轉(zhuǎn)換詳解
這篇文章主要為大家詳細(xì)介紹了Java中實(shí)現(xiàn)時(shí)間與字符串互相轉(zhuǎn)換的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04
java使用CountDownLatch實(shí)現(xiàn)多線程協(xié)作
在多線程編程中,經(jīng)常需要實(shí)現(xiàn)一種機(jī)制來(lái)協(xié)調(diào)多個(gè)線程的執(zhí)行,以確保某些操作在所有線程完成后再進(jìn)行,CountDownLatch?就是?Java?并發(fā)包中提供的一種同步工具,下面我們就來(lái)看看如何使用CountDownLatch實(shí)現(xiàn)多線程協(xié)作吧2023-11-11

