帶你了解Spring中bean的獲取
Spring 中bean的獲取
1.通過(guò)context.getbean 的方式來(lái)獲取bean
ApplicationContext:是spring繼BeanFactory之外的另一個(gè)核心接口或容器,允許容器通過(guò)應(yīng)用程序上下文環(huán)境創(chuàng)建、獲取、管理bean。也就是Spring中的所有的bean都是在這里管理的。
那么通過(guò)可以通過(guò)context.getbean 的方式來(lái)獲取bean的時(shí)候、如何填寫要獲取的bean的名字呢?也就是spring容器如何給注冊(cè)到容器中的bean命名呢?
AnnotationBeanNameGenerator
調(diào)用的是buildDefaultBeanName
方法
buildDefaultBeanName
方法調(diào)用的是Introspector.decapitalize
方法、也就是Introspector類中的decapitalize方法、這是JDK1.8的函數(shù)。命名的規(guī)則就是如果傳入的類的名字的長(zhǎng)度大于1的話、如果第一個(gè)和第二個(gè)字母都是大寫的話、那么就返回類的名字、否則就將類的名字的首字母變?yōu)樾懙淖帜阜祷?
我們可以調(diào)用這個(gè)函數(shù)來(lái)做測(cè)試:
當(dāng)傳入的String是User、USer、USER 、 user的時(shí)候分別返回的是user、USer、USER、user、結(jié)果也是符合我們的預(yù)期的
2.通過(guò)類型來(lái)獲取注冊(cè)到Spring容器中的bean
LoginController loginController1 = context.getBean(LoginController.class);
兩者從Spring容器中獲取的bean是同一個(gè)bean
3.也可以使用這兩個(gè)注解來(lái)取出對(duì)象、也就是將這兩個(gè)對(duì)象作為另外一個(gè)對(duì)象的屬性的時(shí)候、可以使用這兩個(gè)注解來(lái)實(shí)現(xiàn)取bean。
@Autowired
@Resource
使用這三種的方式獲取到的bean都是同一個(gè)bean。
總結(jié)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
淺談Java中強(qiáng)制類型轉(zhuǎn)換的問(wèn)題
下面小編就為大家?guī)?lái)一篇淺談Java中強(qiáng)制類型轉(zhuǎn)換的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05String?concat(String?str)使用小結(jié)
這篇文章主要介紹了String?concat(String?str)使用小結(jié),在了解concat()之前,首先需要明確的是String的兩點(diǎn)特殊性,一是長(zhǎng)度不可變二是值不可變,本文給大家詳細(xì)講解,需要的朋友可以參考下2022-11-11使用Java8實(shí)現(xiàn)觀察者模式的方法(上)
本文給大家介紹使用java8實(shí)現(xiàn)觀察者模式的方法,涉及到j(luò)ava8觀察者模式相關(guān)知識(shí),對(duì)此感興趣的朋友一起學(xué)習(xí)吧2016-02-02SpringBoot項(xiàng)目中讀取resource目錄下的文件六種方法
這篇文章給大家總結(jié)了SpringBoot項(xiàng)目中讀取resource目錄下的文件六種方法,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下2024-05-05RateLimit-使用guava來(lái)做接口限流代碼示例
這篇文章主要介紹了RateLimit-使用guava來(lái)做接口限流代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01IDEA創(chuàng)建Maven項(xiàng)目一直顯示正在加載的問(wèn)題及解決
這篇文章主要介紹了IDEA創(chuàng)建Maven項(xiàng)目一直顯示正在加載的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12