SpringIOC容器Bean初始化和銷毀回調(diào)方式
前言
Spring Bean 的生命周期:init(初始化回調(diào))、destory(銷毀回調(diào)),在Spring中提供了四種方式來(lái)設(shè)置bean生命周期的回調(diào):
- 1.@Bean指定初始化和銷毀方法
- 2.實(shí)現(xiàn)接口
- 3.使用JSR250
- 4.后置處理器接口
使用場(chǎng)景:
在Bean初始化之后主動(dòng)觸發(fā)事件。如配置類的參數(shù)。
1.@Bean指定初始化和銷毀方法
public class Phone {
private String name;
private int money;
//get set
public Phone() {
super();
System.out.println("實(shí)例化phone");
}
public void init(){
System.out.println("初始化方法");
}
public void destory(){
System.out.println("銷毀方法");
}
}@Bean(initMethod = "init",destroyMethod = "destory")
public Phone phone(){
return new Phone();
} AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(BeanConfig5.class); context.close();
打印輸出:
實(shí)例化phone
初始化方法
銷毀方法
2.實(shí)現(xiàn)接口
通過(guò)讓Bean實(shí)現(xiàn)InitializingBean(定義初始化邏輯),DisposableBean(定義銷毀邏輯)接口
public class Car implements InitializingBean, DisposableBean {
public void afterPropertiesSet() throws Exception {
System.out.println("對(duì)象初始化后");
}
public void destroy() throws Exception {
System.out.println("對(duì)象銷毀");
}
public Car(){
System.out.println("對(duì)象初始化中");
}
}
打印輸出:
對(duì)象初始化中
對(duì)象初始化后
對(duì)象銷毀
3.使用JSR250
通過(guò)在方法上定義@PostConstruct(對(duì)象初始化之后)和@PreDestroy(對(duì)象銷毀)注解
public class Cat{
public Cat(){
System.out.println("對(duì)象初始化");
}
@PostConstruct
public void init(){
System.out.println("對(duì)象初始化之后");
}
@PreDestroy
public void destory(){
System.out.println("對(duì)象銷毀");
}
}打印輸出:
對(duì)象初始化
對(duì)象初始化之后
對(duì)象銷毀
4.后置處理器接口
public class Dog implements BeanPostProcessor{
public Dog(){
System.out.println("對(duì)象初始化");
}
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println(beanName+"對(duì)象初始化之前");
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println(beanName+"對(duì)象初始化之后");
return bean;
}
}對(duì)象初始化
org.springframework.context.event.internalEventListenerProcessor對(duì)象初始化之前
org.springframework.context.event.internalEventListenerProcessor對(duì)象初始化之后
org.springframework.context.event.internalEventListenerFactory對(duì)象初始化之前
org.springframework.context.event.internalEventListenerFactory對(duì)象初始化之后
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring boot 如何指定profile啟動(dòng)
這篇文章主要介紹了spring boot 如何指定profile啟動(dòng)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringBoot獲取Request對(duì)象的常見(jiàn)方法
HttpServletRequest 簡(jiǎn)稱 Request,它是一個(gè) Servlet API 提供的對(duì)象,用于獲取客戶端發(fā)起的 HTTP 請(qǐng)求信息,那么在SpringBoot中,獲取 Request對(duì)象的方法有哪些呢,本文小編將給大家講講SpringBoot獲取Request對(duì)象的常見(jiàn)方法2023-08-08
SpringBoot多模塊依賴沖突排查與架構(gòu)優(yōu)化實(shí)戰(zhàn)
本文詳細(xì)記錄了在SpringBoot多模塊項(xiàng)目開(kāi)發(fā)中遇到的依賴版本沖突、模塊依賴設(shè)計(jì)不合理等問(wèn)題的排查和解決方案的過(guò)程,主要重點(diǎn)關(guān)注了父模塊依賴管理、模塊化拆分、按需依賴等等,需要的朋友可以參考下2026-04-04
新手學(xué)習(xí)微服務(wù)SpringCloud項(xiàng)目架構(gòu)搭建方法
這篇文章主要介紹了新手學(xué)習(xí)微服務(wù)SpringCloud項(xiàng)目架構(gòu)搭建方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
Java實(shí)現(xiàn)簡(jiǎn)易即時(shí)通訊系統(tǒng)的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何使用Java模擬實(shí)現(xiàn)類似QQ的簡(jiǎn)易即時(shí)通訊系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-06-06
spring使用Filter過(guò)濾器對(duì)Response返回值進(jìn)行修改的方法
這篇文章主要介紹了spring使用Filter過(guò)濾器對(duì)Response返回值進(jìn)行修改,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09

