spring 依赖注入的3种方式
?
在實際環境中實現IoC容器的方式主要分為兩大類,一類是依賴查找,依賴查找是通過資源定位,把對應的資源查找回來;另一類則是依賴注入,而Spring主要使用的是依賴注入。一般而言,依賴注入可以分為3種方式。
?構造器注入。
?setter注入。
?接口注入。
構造器注入和setter注入是主要的方式,而接口注入是從別的地方注入的方式,比如在Web工程中,配置的數據源往往是通過服務器(比如Tomcat)去配置的,這個時候可以用JNDI的形式通過接口將它注入Spring IoC容器中來。下面對它們進行詳細講解。
構造器注入
構造器注入依賴于構造方法實現,而構造方法可以是有參數的或者是無參數的。在大部分的情況下,我們都是通過類的構造方法來創建類對象,Spring也可以采用反射的方式,通過使用構造方法來完成注入,這就是構造器注入的原理。
public class Role {private Long id;private String roleName;private String note;public Role(String roleName, String note) {this.roleName = roleName;this.note = note;}/******** setter and getter *******/ }這個時候是沒有辦法利用無參數的構造方法去創建對象的,為了使Spring能夠正確創建這個對象,可以像代碼清單那樣去做。
<bean id="role1" class="com.ssm.chapter9.pojo.Role"><constructor-arg index="0" value="總經理"/><constructor-arg index="1" value="公司管理者"/> </bean>constructorarg元素用于定義類構造方法的參數,其中index用于定義參數的位置,而value則是設置值,通過這樣的定義Spring便知道使用Role(String,String)這樣的構造方法去創建對象了。這樣注入還是比較簡單的,但是缺點也很明顯,由于這里的參數比較少,所以可讀性還是不錯的,但是如果參數很多,那么這種構造方法就比較復雜了,這個時候應該考慮setter注入。
使用setter注入
setter注入是Spring中最主流的注入方式,它利用JavaBean規范所定義的setter方法來完成注入,靈活且可讀性高。它消除了使用構造器注入時出現多個參數的可能性,首先可以把構造方法聲明為無參數的,然后使用setter注入為其設置對應的值,其實也是通過Java反射技術得以現實的。這里假設先在代碼清單中為Role類加入一個沒有參數的構造方法,然后做代碼清單的配置。
<bean id="role2" class="com.ssm.chapter9.pojo.Role"><property name="roleName" value="高級工程師"/><property name="note" value="重要人員"/> </bean這樣Spring就會通過反射調用沒有參數的構造方法生成對象,同時通過反射對應的setter注入配置的值了。這種方式是Spring最為主要的方式,在實際工作中使用廣泛。
接口注入
有些時候資源并非來自于自身系統,而是來自于外界,比如數據庫連接資源完全可以在Tomcat下配置,然后通過JNDI的形式去獲取它,這樣數據庫連接資源是屬于開發工程外的資源,這個時候我們可以采用接口注入的形式來獲取它
轉載于:https://www.cnblogs.com/ooo0/p/10962360.html
總結
以上是生活随笔為你收集整理的spring 依赖注入的3种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何创建企业微信应用
- 下一篇: HTTP 协议中的 cookie