欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring中Bean的生命周期實(shí)例解析

 更新時(shí)間:2023年12月01日 08:41:11   作者:MC-閏土  
這篇文章主要介紹了Spring中Bean的生命周期實(shí)例解析,我們定義一個(gè)自定義的MySpringBeanPostProcessor,主要是重寫了BeanPostProcessor接口的postProcessBeforeInitialization與postProcessAfterInitialization方法,需要的朋友可以參考下

Bean的生命周期

spring bean的生命周期官方的流程圖如下:

接下來 我們用代碼驗(yàn)證一下是否如圖所愿:

首先定義一個(gè)testBean

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
/**
 *
 * @author runtu
 * @version TestBean, v2.0 2019/12/13 9:19
 **/
public class TestBean implements BeanNameAware, BeanFactoryAware, ApplicationContextAware,
                      InitializingBean, DisposableBean {
    public TestBean() {
        System.out.println("=====================構(gòu)造方法========================");
    }
    @Override
    public void setBeanName(String s) {
        System.out.println("=====================BeanNameAware========================");
    }
    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        System.out.println("=====================BeanFactoryAware========================");
    }
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        System.out.println("=====================ApplicationContextAware========================");
    }
    @Override
    public void afterPropertiesSet() {
        System.out.println("=====================InitializingBean========================");
    }
    @Override
    public void destroy() {
        System.out.println("=====================DisposableBean========================");
    }
    public void init() {
        System.out.println("=====================init========================");
    }
    public void shutdown() {
        System.out.println("=====================shutdown========================");
    }
}

再定義一個(gè)自定義的MySpringBeanPostProcessor,主要是重寫了BeanPostProcessor接口的postProcessBeforeInitialization與postProcessAfterInitialization方法。

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;
/**
 *
 * @author runtu
 * @version MySpringBeanPostProcessor, v2.0 2019/12/13 9:25
 **/
@Component
public class MySpringBeanPostProcessor implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean,
                                                  String beanName) throws BeansException {
        if (bean instanceof TestBean) {
            System.out.println(
                "=====================postProcessBeforeInitialization========================");
        }
        return bean;
    }
    @Override
    public Object postProcessAfterInitialization(Object bean,
                                                 String beanName) throws BeansException {
        if (bean instanceof TestBean) {
            System.out.println(
                "=====================postProcessAfterInitialization========================");
        }
        return bean;
    }
}

此處我工程為springboot,把TestBean注入之后,啟動項(xiàng)目

@Bean(initMethod = "init", destroyMethod = "shutdown")
public TestBean testBean() {
     return new TestBean();
}

把一些無關(guān)的日志剃掉之后,控制臺打印結(jié)果如下:

# 啟動程序之后控制臺依次打印:
=====================構(gòu)造方法========================
=====================BeanNameAware========================
=====================BeanFactoryAware========================
=====================ApplicationContextAware========================
=====================postProcessBeforeInitialization========================
=====================InitializingBean========================
=====================init========================
=====================postProcessAfterInitialization========================
 # 停止程序之后依次打?。?br />=====================DisposableBean========================
=====================shutdown========================

到此這篇關(guān)于Spring中Bean的生命周期實(shí)例解析的文章就介紹到這了,更多相關(guān)Bean的生命周期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springbootAOP定義切點(diǎn)獲取/修改請求參數(shù)方式

    springbootAOP定義切點(diǎn)獲取/修改請求參數(shù)方式

    這篇文章主要介紹了springbootAOP定義切點(diǎn)獲取/修改請求參數(shù)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Go?Java算法之為運(yùn)算表達(dá)式設(shè)計(jì)優(yōu)先級實(shí)例

    Go?Java算法之為運(yùn)算表達(dá)式設(shè)計(jì)優(yōu)先級實(shí)例

    這篇文章主要為大家介紹了Go?Java算法之為運(yùn)算表達(dá)式設(shè)計(jì)優(yōu)先級實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Java實(shí)現(xiàn)短信驗(yàn)證碼服務(wù)的完整代碼示例

    Java實(shí)現(xiàn)短信驗(yàn)證碼服務(wù)的完整代碼示例

    這篇文章主要介紹了Java實(shí)現(xiàn)短信驗(yàn)證碼服務(wù)的完整代碼示例,文中使用阿里云的短信服務(wù)進(jìn)行應(yīng)用開發(fā)的流程,包括將屬性寫入application.yml配置文件,定義類并指定配置文件,注入實(shí)體類對象等等,需要的朋友可以參考下
    2024-09-09
  • Java?中的?clone(?)?和?new哪個(gè)效率更高

    Java?中的?clone(?)?和?new哪個(gè)效率更高

    很多朋友不太清楚clone()和new那個(gè)更快?針對這個(gè)問題我百度了好多資料,最終小編總結(jié)下關(guān)于Java?中的?clone(?)?和?new哪個(gè)效率更高的問題,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • 淺談SpringCloud之zuul源碼解析

    淺談SpringCloud之zuul源碼解析

    這篇文章主要介紹了淺談SpringCloud之zuul源碼解析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • java環(huán)境中的JDK、JVM、JRE詳細(xì)介紹

    java環(huán)境中的JDK、JVM、JRE詳細(xì)介紹

    這篇文章主要介紹了java環(huán)境中的JDK、JVM、JRE詳細(xì)介紹的相關(guān)資料,對于初學(xué)者還是有必要了解下,細(xì)致說明他們是什么,需要的朋友可以參考下
    2016-11-11
  • Idea如何集成Git&添加項(xiàng)目到git倉庫

    Idea如何集成Git&添加項(xiàng)目到git倉庫

    這篇文章主要介紹了Idea如何集成Git&添加項(xiàng)目到git倉庫,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • MyBatis插件機(jī)制超詳細(xì)講解

    MyBatis插件機(jī)制超詳細(xì)講解

    MyBatis在四大對象的創(chuàng)建過程中,都會有插件進(jìn)行介入。插件可以利用動態(tài)代理機(jī)制一層層的包裝目標(biāo)對象,而實(shí)現(xiàn)在目標(biāo)對象執(zhí)行目標(biāo)方法之前進(jìn)行攔截的效果
    2022-11-11
  • Springmvc Controller接口代碼示例

    Springmvc Controller接口代碼示例

    這篇文章主要介紹了Springmvc Controller接口代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java中StringUtils與CollectionUtils和ObjectUtil概念講解

    Java中StringUtils與CollectionUtils和ObjectUtil概念講解

    這篇文章主要介紹了Java中StringUtils與CollectionUtils和ObjectUtil概念,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12

最新評論