詳解如何在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類(lèi)。
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); } }
這類(lèi)并不會(huì)自動(dòng)執(zhí)行,需要我們注冊(cè)。
硬編碼注冊(cè)
Spring Boot有一個(gè)類(lèi)SpringApplication,這個(gè)類(lèi)是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)文章
SpringBoot整合RabbitMQ實(shí)現(xiàn)RPC遠(yuǎn)程調(diào)用功能
在分布式系統(tǒng)中,RPC(Remote?Procedure?Call)是一種常用的通信機(jī)制,它可以讓不同的節(jié)點(diǎn)之間像調(diào)用本地函數(shù)一樣進(jìn)行函數(shù)調(diào)用,隱藏了底層的網(wǎng)絡(luò)通信細(xì)節(jié),通過(guò)本教程,你可以了解RPC的基本原理以及如何使用Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的RPC客戶端和服務(wù)端2023-06-06一篇文章總結(jié)Java虛擬機(jī)內(nèi)存區(qū)域模型
這篇文章主要介紹了一篇文章總結(jié)Java虛擬機(jī)內(nèi)存區(qū)域模型,本篇文章主要來(lái)總結(jié)一下Java虛擬機(jī)內(nèi)存的各個(gè)區(qū)域,以及這些區(qū)域的作用、服務(wù)對(duì)象以及其中可能產(chǎn)生的問(wèn)題,作為大家的面試寶典。,需要的朋友可以參考下2019-06-06springboot2.1.7整合thymeleaf代碼實(shí)例
這篇文章主要介紹了springboot2.1.7整合thymeleaf代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12了解java中對(duì)象基礎(chǔ)Object類(lèi)
本文主要講解了java中對(duì)象基礎(chǔ)Object類(lèi),文中運(yùn)用大量代碼講解的非常詳細(xì),想學(xué)習(xí)相關(guān)知識(shí)的小伙伴可以參考一下這篇文章2021-09-09Maven 項(xiàng)目生成jar運(yùn)行時(shí)提示“沒(méi)有主清單屬性”
這篇文章主要介紹了Maven 項(xiàng)目生成jar運(yùn)行時(shí)提示“沒(méi)有主清單屬性”,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03