spring中autowire的用法

2021-09-08 11:57:52 字數 1700 閱讀 9199

autowire模式就是在spring的宣告檔案裡用作進行物件間的關聯關係自動繫結的,就是在spring beanfactory內的乙個bean對其bean的引用可以自動進行,而不一定用ref=的方式顯式宣告。在reference的3.3.6節有詳細的介紹,autowire主要有5種模式:

1 no

不使用autowire,引用關係顯示宣告,spring的reference也建議不用autoware,因為這會破壞模組關係的可讀性,原文如下:

discouraged to use autowiring because it

removes the transparency and the structure

from your collaborating classes.

2 byname

用名稱關聯,如果指定了這種模式,如

<

bean

id="usermanagertarget"

class

="com.mdcchina.jianghu.logic.usermanager"

autowire

="byname"

>

<

property

name

="basedao"

/>

bean

>

這樣對於bean usermanagertarget的屬性basedao,spring就會自動去引用同名的bean,也就是上面的宣告和下面是等價的:

<

bean

id="usermanagertarget"

class

="com.mdcchina.jianghu.logic.usermanager"

autowire

="no"

>

<

property

name

="basedao"

>

<

ref

local

="basedao"

/>

property

>

bean

>

3 bytype

和前面的byname類似的,就是這個屬性會在整個beanfactory定義裡找和這個屬性一樣的bean自動關聯上,如果有2個或更多這個型別的bean在beanfactory的定義裡,就直接拋異常了,如果沒有,就什麼都不發生,這個屬性就是null,所以這個只適用與這個屬性的型別有且只有乙個同類的bean在spring裡定義

4 constructor

這個的意思我沒有確定的把握,不過感覺用途也不會大,好像是用建構函式新建乙個屬性型別的bean並關聯上,reference原文是:

bean of the constructor argument type in the bean factory, a fatal error is raised.

5 autodetect

這個的意思好像是說自動決定用bytype還是constructor方式,原文如下:

chooses constructor or bytype through introspection of the bean class. if a default

綜上所述,感覺上只有byname比較實用一些,但是spring的reference還是不推薦在定義中用這個功能

spring中autowire的用法

autowire模式就是在spring的宣告檔案裡用作進行物件間的關聯關係自動繫結的,就是在spring beanfactory內的乙個bean對其bean的引用可以自動進行,而不一定用ref 的方式顯式宣告。在reference的3.3.6節有詳細的介紹,autowire主要有5種模式 1 no ...

spring中autowire的用法

autowire模式就是在spring的宣告檔案裡用作進行物件間的關聯關係自動繫結的,就是在spring beanfactory內的乙個bean對其bean的引用可以自動進行,而不一定用ref 的方式顯式宣告。在reference的3.3.6節有詳細的介紹,autowire主要有5種模式 1 no ...

自動裝配(Autowire)

了解 自動裝配 autowire 自動裝配表現為不需要配置 節點來注入,spring會自動的為屬性注入值!在 節點中新增 autowire 屬性以配置自動裝配。重要 當取值為 byname 時,表示 根據名稱 自動裝配,即spring會檢查這個bean的所有的屬性名稱,然後在spring管理的所有b...