簡(jiǎn)單了解spring bean的循環(huán)引用
看過(guò)一次spring公開(kāi)課,記錄一下bean的循環(huán)引用問(wèn)題。
問(wèn)題:
public class IndexService{
@Autowired
IndexDao indexDao;
}
public class IndexDao{
@Autowired
IndexService indexService;
}
以上的實(shí)例中IndexService依賴IndexDao,IndexDao中依賴IndexService。
spring在bean的實(shí)例化過(guò)程:
先去創(chuàng)建IndexDao bean,
1.創(chuàng)建IndexDao實(shí)例,此時(shí)還沒(méi)有IndexDao bean產(chǎn)生。
2.去配置IndexDao對(duì)象的屬性,這個(gè)屬性就是IndexService,在這個(gè)配置的過(guò)程中會(huì)先把自己(IndexDao)對(duì)象放到singleFactory中;
3.然后去查找IndexService bean去填充,發(fā)現(xiàn)單例池(專門存放bean)中沒(méi)有,然后去singleFactory中去找,還是沒(méi)有。
4.創(chuàng)建IndexService實(shí)例,此時(shí)還沒(méi)有IndexService bean。
5.去配置IndexService對(duì)象的屬性,這個(gè)屬性就是IndexDao,在這個(gè)配置的過(guò)程中會(huì)先把自己(IndexDao)對(duì)象放到singleFactory中;
6.然后去查找IndexDao bean去填充,發(fā)現(xiàn)單例池中沒(méi)有,然后去singleFactory中去找,發(fā)現(xiàn)有了。
7.然后把屬性填充到IndexService中。
8.經(jīng)過(guò)4,5,6,7后已經(jīng)有了IndexService,并且此時(shí)屬性IndexDao有值了,然后通過(guò)步驟3再將這個(gè)IndexService注入到IndexDao
9.然后繼續(xù)完成IndexDao 后續(xù)的bean的初始化。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 簡(jiǎn)單了解Spring beanfactory循環(huán)依賴命名重復(fù)屬性
- 簡(jiǎn)單了解spring bean作用域?qū)傩詓ingleton和prototype的區(qū)別
- 簡(jiǎn)單了解Spring中BeanFactory與FactoryBean的區(qū)別
- 簡(jiǎn)單了解Spring Bean常用注解的裝配
- 淺談Spring單例Bean與單例模式的區(qū)別
- spring ioc的簡(jiǎn)單實(shí)例及bean的作用域?qū)傩越馕?/a>
- 詳解Spring簡(jiǎn)單容器中的Bean基本加載過(guò)程
- SpringMVC中使用bean來(lái)接收f(shuō)orm表單提交的參數(shù)時(shí)的注意點(diǎn)
- Spring bean為什么默認(rèn)是單例
相關(guān)文章
MybatisPlus 主鍵策略之type=IdType.ASSIGN_ID等詳解
雪花算法(雪花)是微博開(kāi)源的分布式ID生成算法其核心思想就是:使用一個(gè)64位的長(zhǎng)型的數(shù)字作為全局唯一ID,這篇文章主要介紹了MybatisPlus 主鍵策略(type=IdType.ASSIGN_ID等詳解),需要的朋友可以參考下2024-04-04
Java中實(shí)現(xiàn)分布式定時(shí)任務(wù)的方法
這篇文章主要介紹了Java中實(shí)現(xiàn)分布式定時(shí)任務(wù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
SpringMVC中的DispatcherServlet詳細(xì)解析
這篇文章主要介紹了SpringMVC中的DispatcherServlet詳細(xì)解析,DispatcherServlet也是一個(gè)Servlet,它也能通過(guò)Servlet的API來(lái)響應(yīng)請(qǐng)求,從而成為一個(gè)前端控制器,Web容器會(huì)調(diào)用Servlet的doGet()以及doPost()等方法,需要的朋友可以參考下2023-12-12
解決Mybatis-plus自定義TypeHandler查詢映射結(jié)果一直為null問(wèn)題
這篇文章主要介紹了解決Mybatis-plus自定義TypeHandler查詢映射結(jié)果一直為null問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
關(guān)于MyBatis模糊查詢的幾種實(shí)現(xiàn)方式
在實(shí)際項(xiàng)目中,我們會(huì)經(jīng)常對(duì)數(shù)據(jù)做一些模糊查詢的操作,這時(shí)候就需要利用到 like字段,那么在Mybatis中,有哪些方式可以實(shí)現(xiàn)模糊查詢呢,需要的朋友可以參考下2023-05-05
Java內(nèi)存模型(JMM)及happens-before原理
這篇文章主要介紹了java內(nèi)存模型(JMM)及happens-before原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
shuffle的關(guān)鍵階段sort(Map端和Reduce端)源碼分析
今天小編就為大家分享一篇關(guān)于shuffle的關(guān)鍵階段sort(Map端和Reduce端)源碼分析,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01
SpringSecurity實(shí)現(xiàn)自定義登錄方式
本文介紹自定義登錄流程,包括自定義AuthenticationToken、AuthenticationFilter、AuthenticationProvider以及SecurityConfig配置類,詳細(xì)解析了認(rèn)證流程的實(shí)現(xiàn),為開(kāi)發(fā)人員提供了具體的實(shí)施指導(dǎo)和參考2024-09-09

