最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文搞懂Spring中Bean的生命周期

 更新時(shí)間:2022年06月08日 08:42:44   作者:夏志121  
這篇文章主要為大家介紹了Spring中Bean生命周期的使用及控制,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定的參考價(jià)值,感興趣的可以學(xué)習(xí)一下

生命周期:從創(chuàng)建到消亡的完整過程

bean聲明周期:bean從創(chuàng)建到銷毀的整體過程

bean聲明周期控制:在bean創(chuàng)建后到銷毀前做一些事情

一、使用配置生命周期的方法

在BookDaoImpl中實(shí)現(xiàn)類中創(chuàng)建相應(yīng)的方法:

//表示bean初始化對(duì)應(yīng)的操作
    public void init(){
        System.out.println("init...");
    }
    //表示bean銷毀前對(duì)應(yīng)的操作
    public void destory(){
        System.out.println("destory...");
    }

applicationContext.xml配置初始化聲明周期回調(diào)函數(shù)及銷毀聲明周期回調(diào)函數(shù)

 <!--init-method:設(shè)置bean初始化生命周期回調(diào)函數(shù)-->
    <!--destroy-method:設(shè)置bean銷毀生命周期回調(diào)函數(shù),僅適用于單例對(duì)象-->
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl" init-method="init" destroy-method="destory"/>

執(zhí)行結(jié)果:

虛擬機(jī)退出,沒有給bean銷毀的機(jī)會(huì)。

可利用ClassPathXmlApplictionContext里的close方法主動(dòng)關(guān)閉容器,就會(huì)執(zhí)行銷毀方法。

import com.itheima.dao.BookDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class AppForLifeCycle {
    public static void main( String[] args ) {
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
 
        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
        bookDao.save();
 
        //關(guān)閉容器
        ctx.close();
    }
}

執(zhí)行結(jié)果:

不過這種方式比較暴力,容器還提供另外的方法

在AppForLifeCycle中用關(guān)閉鉤子函數(shù)

//注冊(cè)關(guān)閉鉤子函數(shù),在虛擬機(jī)退出之前回調(diào)此函數(shù),關(guān)閉容器
        ctx.registerShutdownHook();

執(zhí)行結(jié)果:

關(guān)閉鉤子在任何時(shí)間都可以執(zhí)行,close關(guān)閉比較暴力。

二、生命周期控制——接口控制(了解)

applicationContext.xml配置:

    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
        <property name="bookDao" ref="bookDao"/>
    </bean>

BookServiceImpl:

可以利用接口InitializingBean和DisposableBean來設(shè)置初始化和銷毀后的方法設(shè)置

import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
 
public class BookServiceImpl implements BookService, InitializingBean, DisposableBean {
    private BookDao bookDao;
 
    public void setBookDao(BookDao bookDao) {
        System.out.println("set .....");
        this.bookDao = bookDao;
    }
 
    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
 
    public void destroy() throws Exception {
        System.out.println("service destroy");
    }
 
    public void afterPropertiesSet() throws Exception {
        System.out.println("service init");
    }
}

執(zhí)行結(jié)果:

可以看出set在執(zhí)行在init的執(zhí)行之后,當(dāng)你的屬性設(shè)置完以后,才去執(zhí)行afterPropertiesSet,所有才叫afterPropertiesSet,在屬性設(shè)置之后。

小結(jié)

生命周期總結(jié)

初始化容器

  • 1、創(chuàng)建對(duì)象
  • 2、執(zhí)行構(gòu)造方法
  • 3、執(zhí)行屬性注入(set操作)
  • 4、執(zhí)行bean初始化方法

使用bean

執(zhí)行業(yè)務(wù)操作

關(guān)閉/銷毀容器

執(zhí)行bean操作

1、bean生命周期控制

配置

init-method
destroy-method

接口(了解)

InitializingBean
DisposableBean

2、關(guān)閉容器

ConfigurableApplicationContext

close()
registerShutdownHook()

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

相關(guān)文章

  • Java?HttpURLConnection使用方法與實(shí)例演示分析

    Java?HttpURLConnection使用方法與實(shí)例演示分析

    這篇文章主要介紹了Java?HttpURLConnection使用方法與實(shí)例演示,HttpURLConnection一個(gè)抽象類是標(biāo)準(zhǔn)的JAVA接口,該類位于java.net包中,它提供了基本的URL請(qǐng)求,響應(yīng)等功能,下面我們來深入看看
    2023-10-10
  • Java的Lock接口與讀寫鎖詳解

    Java的Lock接口與讀寫鎖詳解

    這篇文章主要介紹了Java的Lock接口與讀寫鎖詳解,鎖是用來控制多個(gè)線程訪問共享資源的方式,一般來說,一個(gè)鎖能夠防止多個(gè)線程同時(shí)訪問共享資源,但是有些鎖可以允許多個(gè)線程并發(fā)的訪問共享資源,比如讀寫鎖,需要的朋友可以參考下
    2023-12-12
  • JAVA基礎(chǔ)之注解與反射的使用方法和場(chǎng)景

    JAVA基礎(chǔ)之注解與反射的使用方法和場(chǎng)景

    這篇文章主要給大家介紹了關(guān)于JAVA基礎(chǔ)之注解與反射的使用方法和場(chǎng)景的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • java8中l(wèi)amba表達(dá)式的使用

    java8中l(wèi)amba表達(dá)式的使用

    這篇文章主要介紹了java8中l(wèi)amba表達(dá)式的使用,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • JVM 方法調(diào)用之靜態(tài)分派(詳解)

    JVM 方法調(diào)用之靜態(tài)分派(詳解)

    下面小編就為大家?guī)硪黄狫VM 方法調(diào)用之靜態(tài)分派(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • 使用SpringBoot自定義starter詳解

    使用SpringBoot自定義starter詳解

    這篇文章主要介紹了使用Spring Boot自定義starter詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助喲,需要的朋友可以參考下
    2021-05-05
  • 微服務(wù)通過Feign調(diào)用進(jìn)行密碼安全認(rèn)證操作

    微服務(wù)通過Feign調(diào)用進(jìn)行密碼安全認(rèn)證操作

    這篇文章主要介紹了微服務(wù)通過Feign調(diào)用進(jìn)行密碼安全認(rèn)證操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java更新調(diào)度器(update scheduler)的使用詳解

    Java更新調(diào)度器(update scheduler)的使用詳解

    Java更新調(diào)度器是Java中的一個(gè)特性,可以自動(dòng)化Java應(yīng)用程序的更新過程,它提供了一種方便的方式來安排Java應(yīng)用程序的更新,確保其與最新的功能、錯(cuò)誤修復(fù)和安全補(bǔ)丁保持同步,本文將深入介紹如何使用Java更新調(diào)度器,并解釋它對(duì)Java開發(fā)人員和用戶的好處
    2023-11-11
  • Java實(shí)現(xiàn)常見的排序算法的示例代碼

    Java實(shí)現(xiàn)常見的排序算法的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)常見的排序算法(選擇排序、插入排序、希爾排序等)的相關(guān)資料,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-10-10
  • Java多種獲取項(xiàng)目路徑下的文件方式

    Java多種獲取項(xiàng)目路徑下的文件方式

    文章介紹了在Java項(xiàng)目中獲取resources文件夾下文件的InputStream的多種方法,包括使用類加載器、上下文類加載器、系統(tǒng)屬性和Paths類
    2024-12-12

最新評(píng)論

武邑县| 喜德县| 荆门市| 林甸县| 万源市| 徐水县| 临洮县| 章丘市| 浦城县| 玉门市| 富宁县| 黄浦区| 道孚县| 剑川县| 刚察县| 视频| 刚察县| 营山县| 阳春市| 留坝县| 开江县| 大港区| 长垣县| 民权县| 龙川县| 新和县| 凤阳县| 木里| 祁东县| 同心县| 图木舒克市| 来凤县| 宿州市| 石林| 瑞安市| 红桥区| 迁西县| 吴旗县| 黄冈市| 周至县| 靖安县|