Spring的依賴注入有三種方式:
1,構造器注入
2,setter注入
3,接口注入
下面我給大家介紹一下這三種注入
1.構造器注入
構造器注入主要是依賴於構造方法去實現,構造方法可以是有參也可以是無參,我們在平常都是通過類的構造方法來創建類對象,以及給他賦值,同樣Spring 也可以采用反射的方式,通過構造方法來完成注入注入(賦值),這就是構造器注入的原理,說了那么多我們就來看看代碼的實現吧
/** * * 構造器注入 * */ package com.xiaojiang.Spring; public class Role { private int id; private String roleName; private String note; public Role(){} public Role(int id,String roleName, String note) {
super(); this.id = id; this.roleName = roleName; this.note = note; }
//setter,getter方法省略 }
applicationContext.xml文件
<!--構造器配置--> <bean id="Role" class="com.xiaojiang.Spring.Role"> <constructor-arg value="1" type="int"></constructor-arg> <constructor-arg value="小江" type="java.lang.String"></constructor-arg> <constructor-arg value="有點丑" type="java.lang.String"></constructor-arg> </bean>
constructor-arg元素用於定義類構造方法的參數,其中type用於定義參數的類型,也可以使用index來定義參數的位置,而這里的value是用於設置值,以上的代碼就是通過一個Spring去裝配一個Bean。
2.setter注入
setter是Spring現在最主流的注入方式,它可以利用Java Bean 規范所定義set/get方法來完成注入,可讀性靈活性高,它不需要使用構造器注入時出現的多個參數,它可以把構造方法聲明成無參構造,再使用setter注入設置相對應的值,其實也是通過java反射技術去實現的.
類里面的代碼set和get方法我就省略了,下面直接上xml代碼
<!--配置setter注入--> <bean id="Role" class="com.xiaojiang.Spring.Role"> <property name="id" value="1"><property> <property name="roleName" value="小江"><property> <property name="note" value="測試"><property> </bean>
以上方式就是Spring最主要的方式了,使用廣泛
3.接口注入
接口注入模式因為歷史較為悠久,在很多容器中都已經得到應用。但由於其在靈活性、易用性上不如其他兩種注入模式,因而在 IOC 的專題世界內並不被看好。