1. 程式人生 > 實用技巧 >Spring依賴注入的方式

Spring依賴注入的方式

一、依賴注入方式

  依賴注入就是通過spring將bean所需要的引數傳遞到bean例項物件的過程

1.屬性注入

<!-- 屬性注入 -->
<bean id="car" class="com.spring.model.Car">  
    <property name="maxSpeed" value="200"></property>
    <property name="brand" value="紅旗CA72"></property>  
    <property name="price" value="200000.00"></property>
</bean>

例項物件中寫get(),set()方法,<property>中的name屬性與例項物件中的屬性相對應

//屬性注入
@Test
public void test(){
    //讀取配置檔案
    ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
    //獲取bean的例項
    Car car=(Car) ctx.getBean("car");
    car.run();
}

2、建構函式注入

<!-- 建構函式注入(通過入參型別和位置索引確定對應關係) -->
<!-- 對應public Car(String brand, String corp,int
maxSpeed)建構函式 --> <bean id="car3" class="com.spring.model.Car"> <constructor-arg index="0" type="java.lang.String" value="賓士"></constructor-arg> <constructor-arg index="1" type="java.lang.String" value="中國一汽"></constructor-arg> <constructor-arg index="2" type="int" value="200"></constructor-arg> </bean>

例項物件中寫構造方法,<constructor-arg>中的index索引和type變數型別和建構函式的引數相對應

3、註解

1.@Autowried

1)預設基於型別查詢容器的的Bean進行注入(注入的Bean的實現類是唯一的)。

2)當實現類的Bean大於一個的時候,需結合@Qualifier,根據Bean的名稱來指定需要注入的例項。或者使用@Primary註解標註具體的Bean來讓Spring優先選擇該Bean進行注入

3)@Autowried註解可以標註在構造方法、set方法(屬性)、欄位

@Qualifier標註在方法引數、set方法、欄位上、型別上

@Primary標註在類上以及方法上

2.@Resource(JSR250的標準)

1)預設是基於Bean的名稱進行注入,如果查詢的name不存在,則會根據型別進行查詢

2)當指定name屬性時,則只按照名稱進行查詢

3)當指定type屬性時,則只按照型別進行查詢

4)當指定name和type時,則這兩個屬性必須同時滿足才可注入