您的“關注”和“點贊”,是信任,是認可,是支持,是動力......
目錄如意見相佐,可留言,
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新,
- 1 Spring 基于自動裝配的依賴注入概述
- 2 自動裝配的局限性
- 3 案例實操,走你
- 3.1 案例:byName 模式
- 3.2 案例:byType 模式
- 3.3 案例:constructor 模式
- 【文章其他地址】
- 微信公眾號:碼農阿杰
- CSDN 博客
- 【參考資料】
- spring
- Artifact Repository Browser
- Apache Commons
1 Spring 基于自動裝配的依賴注入概述
其他依賴注入的方式請參見博文《Spring 依賴注入(DI)詳解 》,
Spring 為我們提供了一個自動裝配的機制,操作概述如下所示:
- 在類中提供依賴物件的
setter方法,依賴項為setter方法引數,constructor模式不需要,因為依賴項是構造器引數, - 在 Spring 的組態檔中定義 Bean 時,
<bean>標簽有一個autowire屬性,autowire屬性值有 6 種,接下來會逐一進行介紹,可以通過這個屬性來讓 Spring 容器為接受管理的 Bean 自動注入依賴物件,
例如:<bean id="標識名" autowire="autowire屬性值"/>
如以上操作,就可以完成自動裝配,就不用在組態檔中使用<property>標簽或<constructor-arg>標簽來描述 Bean 之間的依賴關系了,Spring 容器會自動建立 Bean 之間的依賴關系,
有效的解決了組態檔可能會出現“臃腫”的問題,使代碼整潔、美觀,
autowire屬性值有如下 6 種(也可叫做 6 種自動裝配模式):
no:默認的設定,表示不啟用自動裝配,需要顯式裝配 Bean,byName:按名稱自動裝配,可以這么來理解,Spring 容器在管理一個類時,在組態檔中添加 Bean 的autowire屬性,并把屬性值設定為byName;在 Java 代碼中對應的有一個類,類中得有setXxx(依賴項引數)方法,Spring 容器會嘗試將它的屬性(指的是依賴項引數)與組態檔中其他定義為相同名稱(id值 或 name值)的 Bean 進行匹配,如果找到匹配項,Spring 容器會將這些 Bean 實體注入到擁有autowire=byName屬性的 Bean 中,如果沒匹配成功,將拋出例外,依賴項引數為null,byType:按型別自動裝配,可以這么來理解,Spring 容器在管理一個類時,在組態檔中添加 Bean 的autowire屬性,并把屬性值設定為byType;在 Java 代碼中對應的有一個類,類中得有setXxx(依賴項引數)方法,Spring 容器會嘗試將它的屬性(指的是依賴項引數)型別與組態檔中其他定義為相同型別(class值)的 Bean 進行匹配,如果找到不止一個匹配項,將拋出例外;如果沒有找到匹配項,依賴項引數為null,constructor:與 byType 模式相似,不同之處在與它應用于構造器引數(依賴項),如果在容器中沒有找到與構造器引數型別一致的 Bean,那么將拋出例外,(其實就是根據構造器引數的資料型別,進行 byType 模式的自動裝配,)autodetect:通過 Bean 類的自省機制(introspection)來決定是使用constructor模式還是byType模式進行自動裝配,Spring 首先嘗試通過constructor的模式自動裝配,如果它不執行;Spring 再嘗試通過byType的模式來自動裝配,default:設定上級標簽<beans>的default-autowire屬性定義裝配模式,
2 自動裝配的局限性
- 不是所有型別都可以使用自動裝配,不能自動裝配的資料型別有:Object、基本資料型別(Date、CharSequence、Number、URI、URL、Class、String)等等,
- 自動裝配不如顯示裝配精確,如果可能的話盡量使用顯式裝配,
3 案例實操,走你
主要演示byName、byType和constructor三種模式,因為學會了這三種,其他的模式也都能搞定了,
3.1 案例:byName 模式
第一步:創建Teacher類,內容如下圖所示:
第二步:創建Staff類,內容如下圖所示:
第三步:創建組態檔,內容如下所示:
第四步:創建測驗類和 JUnit 運行測驗,內容如下圖所示:
3.2 案例:byType 模式
第一步:創建Teacher類,內容如下圖所示:
第二步:創建Staff類,內容如下圖所示:
第三步:創建組態檔,內容如下所示:
第四步:創建測驗類和 JUnit 運行測驗,內容如下圖所示:
3.3 案例:constructor 模式
第一步:創建Teacher類,內容如下圖所示:
第二步:創建Staff類,內容如下圖所示:
第三步:創建組態檔,內容如下所示:
第四步:創建測驗類和 JUnit 運行測驗,內容如下圖所示:
【文章其他地址】
微信公眾號:碼農阿杰
CSDN 博客
【參考資料】
spring
Artifact Repository Browser
Apache Commons
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/186817.html
標籤:Java
上一篇:Spring 依賴注入(DI)詳解 [Spring][依賴注入的 6 種實作方式][setter注入][構造器注入][注解注入][自動裝配注入][靜態工廠注入][實體工廠注入]
下一篇:Eclipse下匯入web專案(Some projects cannot be imported because they already exist in the workspace)
