SPRING FRAMEWORK BEAN作用域和生命周期原理解析
這篇文章主要介紹了SPRING FRAMEWORK BEAN作用域和生命周期原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
Spring beand的作用域
設(shè)置為singleton時(shí),相當(dāng)于一個(gè)類只能有一個(gè)實(shí)例,當(dāng)再次申請(qǐng)時(shí),返回的是同一個(gè)實(shí)例
可以看到兩個(gè)bean實(shí)例的hashcode值是一樣的,說(shuō)明在此申請(qǐng)到的是同一個(gè)實(shí)例
將bean的作用域設(shè)置為prototype時(shí),再次運(yùn)行,可以看到,申請(qǐng)到的是兩個(gè)不同bean實(shí)例
目前只學(xué)習(xí)了prototype作用域和singleton作用域,剩下的等待之后學(xué)習(xí)
Spring bean的生命周期
1、定義 配置xml文件的過(guò)程
2、初始化 ioc容器對(duì)bean、進(jìn)行實(shí)例化
3、使用
4、銷(xiāo)毀 ioc容器停止時(shí)銷(xiāo)毀所有由bean容器創(chuàng)建的bean實(shí)例
初始化和銷(xiāo)毀都有三種方式
1,實(shí)現(xiàn)接口,InitializingBean,DisposableBean
2,在每個(gè)bean中定義init-method和destroy-method
3,在xml配置文件中定義默認(rèn)的default-init和default-destroy方法
/* * public void defautinit() { System.out.println("Bean defaut Init." + * this.hashCode()); } * * public void defautdestroy() { System.out.println("Bean defaut destroy." + * this.hashCode()); } */ /* * @Override public void destroy() throws Exception { * System.out.println("Bean destory."+this.hashCode()); } * * @Override public void afterPropertiesSet() throws Exception { * System.out.println("Bean init."+this.hashCode()); } */ /* * public void start() { System.out.println("Bean start."+this.hashCode()); } * * public void stop() { System.out.println("Bean stop."+this.hashCode()); } */
接口定義的初始化和銷(xiāo)毀方法優(yōu)先級(jí)大于bean中定義的方法,
xml默認(rèn)的方法優(yōu)先級(jí)最低,甚至可以不在bean中實(shí)現(xiàn),也不會(huì)報(bào)錯(cuò),如果實(shí)現(xiàn)另外兩種,會(huì)被覆蓋
如果在bean中設(shè)置了init和destroy方法則一定需要實(shí)現(xiàn),否則會(huì)啟動(dòng)失敗
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java實(shí)現(xiàn)文件讀寫(xiě)與壓縮實(shí)例
這篇文章主要介紹了java實(shí)現(xiàn)文件讀寫(xiě)與壓縮實(shí)例,有助于讀者加深對(duì)文件操作的理解,需要的朋友可以參考下2014-07-07Java數(shù)據(jù)封裝樹(shù)形結(jié)構(gòu)代碼實(shí)例
這篇文章主要介紹了Java數(shù)據(jù)封裝樹(shù)形結(jié)構(gòu)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01Java+swing+Mysql實(shí)現(xiàn)商品銷(xiāo)售管理系統(tǒng)
基礎(chǔ)扎不扎實(shí)只有在實(shí)戰(zhàn)中才能顯現(xiàn),本篇文章手把手帶你用Java+swing+Mysql實(shí)現(xiàn)商品銷(xiāo)售管理系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2022-01-01SpringBoot打印詳細(xì)啟動(dòng)異常信息
這篇文章主要介紹了SpringBoot打印詳細(xì)啟動(dòng)異常信息,本文包含了詳細(xì)的過(guò)程解析與案例,概要的說(shuō)明了如何去使用打印啟動(dòng)異常信息,需要的朋友可以參考下2021-06-06java 多線程實(shí)現(xiàn)在線咨詢(udp)
這篇文章主要介紹了java 多線程實(shí)現(xiàn)在線咨詢(udp)的示例,幫助大家更好的理解和學(xué)習(xí)Java 網(wǎng)絡(luò)編程的相關(guān)內(nèi)容,感興趣的朋友可以了解下2020-11-11