Spring創(chuàng)建Bean完成后執(zhí)行指定代碼的幾種實(shí)現(xiàn)方式
Spring中Bean創(chuàng)建完成后執(zhí)行指定代碼的幾種實(shí)現(xiàn)方式
在實(shí)際開發(fā)中經(jīng)常會(huì)遇到在spring容器加載完某個(gè)bean之后,需要執(zhí)行一些業(yè)務(wù)代碼的場(chǎng)景。比如初始化配置、緩存等。有以下幾種方式可以實(shí)現(xiàn)此需求
1、 實(shí)現(xiàn)ApplicationListener接口
實(shí)現(xiàn)ApplicationListener接口并實(shí)現(xiàn)方法onApplicationEvent()方法,Bean在創(chuàng)建完成后會(huì)執(zhí)行onApplicationEvent方法
@Component
public class DoByApplicationListener implements ApplicationListener<ContextRefreshedEvent> {
public DoByApplicationListener() {
System.out.println("DoByApplicationListener constructor");
}
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
if (event.getApplicationContext().getParent() == null) {
System.out.println("DoByApplicationListener do something");
}
}
}2、 實(shí)現(xiàn)InitializingBean接口
實(shí)現(xiàn)InitializingBean接口并實(shí)現(xiàn)方法afterPropertiesSet(),Bean在創(chuàng)建完成后會(huì)執(zhí)行afterPropertiesSet()方法
@Component
public class DoByInitializingBean implements InitializingBean {
public DoByInitializingBean() {
System.out.println("DoByInitializingBean constructor");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("InitByInitializingBean do something");
}
}3、 使用@PostConstruct注解
在Bean的某個(gè)方法上使用@PostConstruct注解,Bean在創(chuàng)建完成后會(huì)執(zhí)行該方法
@Component
public class DoByPostConstructAnnotation {
public DoByPostConstructAnnotation() {
System.out.println("DoByPostConstructAnnotation constructor");
}
@PostConstruct
public void init(){
System.out.println("InitByPostConstructAnnotation do something");
}
}轉(zhuǎn)載自:https://segmentfault.com/a/1190000019622443?utm_source=tag-newest
到此這篇關(guān)于Spring中Bean創(chuàng)建完成后執(zhí)行指定代碼的幾種實(shí)現(xiàn)方式的文章就介紹到這了,更多相關(guān)Spring Bean創(chuàng)建完成后執(zhí)行指定代碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Shell腳本實(shí)現(xiàn)SpringBoot項(xiàng)目自動(dòng)化部署到Docker的操作指南
在日常項(xiàng)目開發(fā)中,我們經(jīng)常會(huì)將SpringBoot項(xiàng)目打包并部署到服務(wù)器上的Docker環(huán)境中,為了提升效率、減少重復(fù)操作,我們可以通過(guò)Shell腳本實(shí)現(xiàn)自動(dòng)化部署,所以本文給大家介紹了使用Shell腳本實(shí)現(xiàn)SpringBoot項(xiàng)目自動(dòng)化部署到Docker的操作指南,需要的朋友可以參考下2025-05-05
Java調(diào)用打印機(jī)的2種方式舉例(無(wú)驅(qū)/有驅(qū))
我們平時(shí)使用某些軟件或者在超市購(gòu)物的時(shí)候都會(huì)發(fā)現(xiàn)可以使用打印機(jī)進(jìn)行打印,這篇文章主要給大家介紹了關(guān)于Java調(diào)用打印機(jī)的2種方式,分別是無(wú)驅(qū)/有驅(qū)的相關(guān)資料,需要的朋友可以參考下2023-11-11
Liquibase結(jié)合SpringBoot使用實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理功能
Liquibase 是一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù)管理工具,它幫助你通過(guò)自動(dòng)化管理數(shù)據(jù)庫(kù)的變更、版本控制、和回滾,簡(jiǎn)化了開發(fā)中的數(shù)據(jù)庫(kù)遷移工作,這篇文章主要介紹了Liquibase結(jié)合SpringBoot使用實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理,需要的朋友可以參考下2024-12-12
SpringBoot基于RabbitMQ實(shí)現(xiàn)消息可靠性的方法
RabbitMQ 提供了 publisher confirm 機(jī)制來(lái)避免消息發(fā)送到 MQ 過(guò)程中丟失,這種機(jī)制必須給每個(gè)消息指定一個(gè)唯一ID,消息發(fā)送到MQ以后,會(huì)返回一個(gè)結(jié)果給發(fā)送者,表示消息是否處理成功,本文給大家介紹了SpringBoot基于RabbitMQ實(shí)現(xiàn)消息可靠性的方法,需要的朋友可以參考下2024-04-04
Java邏輯運(yùn)算符短路求值的優(yōu)雅實(shí)踐指南
本文探討了Java邏輯運(yùn)算符短路求值(Short-circuit?Evaluation)的巧妙應(yīng)用,通過(guò)一個(gè)用戶日志清理場(chǎng)景,展示了如何利用&&運(yùn)算符的特性優(yōu)化代碼,希望對(duì)大家有所幫助2026-05-05
Maven?Pom?文件中的隱式依賴導(dǎo)致Jar沖突問題
這篇文章主要介紹了Maven?Pom?文件中的隱式依賴導(dǎo)致Jar沖突問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12

