1. 程式人生 > >Spring (1)

Spring (1)

true 構造器註入 依賴關系 prop 松耦合 並且 問題 程序 統一管理

Spring 的依賴註入

依賴: 如果在 Class A 中,有 Class B 的實例,則稱 Class A 對 Class B 有一個依賴。

所謂依賴註入,是指程序運行過程中,如果需要調用另一個對象協助時,無須在代碼中創建被調用者,而是依賴於外部的註入。Spring的依賴註入對調用者和被調用者幾乎沒有任何要求,完全支持對POJO之間依賴關系的管理。

ioc,及控制反轉,它是程序組件或類之間盡量形成一種松耦合的結構,開發者在使用類的實例之前,需要先創建對象的實例,但是IOC將創建實例的任務交給IOC容器,這樣開發應用代碼是只需要直接實用類的實例。

平常的Java開發中,程序員在某個類中需要依賴其它類的方法。

通常是new一個依賴類再調用類實例的方法,這種開發存在的問題是new的類實例不好統一管理。

Spring提出了依賴註入的思想,即依賴類不由程序員實例化,而是通過Spring容器幫我們new指定實例並且將實例註入到需要該對象的類中。

依賴註入的另一種說法是"控制反轉"。通俗的理解是:平常我們new一個實例,這個實例的控制權是我們程序員。

而控制反轉是指new實例工作不由我們程序員來做而是交給Spring容器來做。

Spring支持兩種依賴註入方式 setter註入和 構造器註入。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
   <!-- <bean id="car1" class="model.Car">
      <property name="carname" value="aodi"></property>//setter 註入
      <property name="price" value="35555"></property>
   </bean> -->
   
   <bean id="car2" class="model.Car">//構造器註入
      <constructor-arg index="0">
         <value>baoma</value>
      </constructor-arg>
      <constructor-arg index="1">
         <value>3400000</value>     
      </constructor-arg>
         
   </bean>
</beans>

  

Spring (1)