日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

(转)Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别

發(fā)布時(shí)間:2025/3/14 javascript 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Spring中Bean的命名

1、每個(gè)Bean可以有一個(gè)id屬性,并可以根據(jù)該id在IoC容器中查找該Bean,該id屬性值必須在IoC容器中唯一;

2、可以不指定id屬性,只指定全限定類名,如:

<bean class="com.zyh.spring3.hello.StaticBeanFactory"></bean>

此時(shí)需要通過接口getBean(Class<T> requiredType)來獲取Bean;

如果該Bean找不到則拋異常:NoSuchBeanDefinitionException

如果該類型的Bean有多個(gè)則拋異常:NoUniqueBeanDefinitionException

3、如果不指定id,只指定name,那么name為Bean的標(biāo)識(shí)符,并且需要在容器中唯一;

4、同時(shí)指定name和id,此時(shí)id為標(biāo)識(shí)符,而name為Bean的別名,兩者都可以找到目標(biāo)Bean;

5、可以指定多個(gè)name,之間可以用分號(hào)(“;”)、空格(“ ”)或逗號(hào)(“,”)分隔開,如果沒有指定id,那么第一個(gè)name為標(biāo)識(shí)符,其余的為別名;若指定了id屬性,則id為標(biāo)識(shí)符,所有的name均為別名。如:

<bean name="alias1 alias2;alias3,alias4" id="hello1" class="com.zyh.spring3.hello.HelloWorld"> ?<constructor-arg index="0" value="Rod"></constructor-arg> </bean>

此時(shí),hello1為標(biāo)識(shí)符,而alias1,alias2,alias3,alias4為別名,它們都可以作為Bean的鍵值;

6、可以使用<alias>標(biāo)簽指定別名,別名也必須在IoC容器中唯一,如:

<bean name="bean" class="com.zyh.spring3.hello.HelloWorld"/>?? <alias alias="alias1" name="bean"/>?? <alias alias="alias2" name="bean"/>

ref和idref之間的區(qū)別

在Spring中,idref屬性和ref屬性都可以用在constructor-arg元素和property元素中完成注入,那么它之間有什么區(qū)別呢?

考慮如下一段配置:

<bean id="bea" class="java.lang.String"> ?<constructor-arg index="0"><value>testString</value></constructor-arg> </bean> <bean id="beanID" class="com.zyh.spring3.hello.HelloWorld"> ?<constructor-arg name="name"><idref bean="bea" /></constructor-arg> ?<property name="id"> ? <ref local="bea" /> ?</property> ?<property name="age" value="25"></property> </bean>

其實(shí),idref注入的是目標(biāo)bean的id而不是目標(biāo)bean的實(shí)例,同時(shí)使用idref容器在部署的時(shí)候還會(huì)驗(yàn)證這個(gè)名稱的bean是否真實(shí)存在。其實(shí)idref就跟value一樣,只是將某個(gè)字符串注入到屬性或者構(gòu)造函數(shù)中,只不過注入的是某個(gè)Bean定義的id屬性值。所以上面的代碼中

<constructor-arg name="name"><idref bean="bea" /></constructor-arg>

其實(shí)等同于

<constructor-arg name="name"><value>bea</value></constructor-arg>

而ref則是完全地不同,ref元素是將目標(biāo)Bean定義的實(shí)例注入到屬性或構(gòu)造函數(shù)中,ref元素有三個(gè)屬性,區(qū)別如下:

1、local 只能指定與當(dāng)前配置的Bean在同一個(gè)配置文件中的Bean定義的名稱; 2、parent 只能指定位于當(dāng)前容器的父容器中定義的對(duì)象引用; 3、bean 基本上通吃,即包括以上兩種情況都可以,所以,通吃情況下,直接使用bean來指定對(duì)象引用就可以了。 所以,上面那段配置代碼中,beanID這個(gè)Bean中構(gòu)造函數(shù)的參數(shù)name注入的只是“bea”這個(gè)字符串;而其id屬性注入的則是testString這個(gè)字符串。

Spring中如何配置Hibernate事務(wù)?

Struts2整合Spring方法及原理?

基于 Spring 設(shè)計(jì)并實(shí)現(xiàn) RESTful Web Services?

Spring-3.2.4 + Quartz-2.2.0集成實(shí)例?

使用 Spring 進(jìn)行單元測(cè)試?

運(yùn)用Spring注解實(shí)現(xiàn)Netty服務(wù)器端UDP應(yīng)用程序?

Spring 3.x 企業(yè)應(yīng)用開發(fā)實(shí)戰(zhàn) PDF完整高清掃描版+源代碼?

轉(zhuǎn)載于:https://www.cnblogs.com/ckysea/p/4528279.html

總結(jié)

以上是生活随笔為你收集整理的(转)Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。