spring依賴註入深入理解
IOC&&DI
IOC(Inversion of Control)一般分為兩種類型:依賴註入DI(Dependency Injection)和依賴查找(Dependency Lookup)
org.springframework.beans.factory.BeanFactory是IOC容器的具體實現,是Spring IOC容器的核心接口
Spring IOC負責創建對象,管理對象,裝配對象,配置對象,並且管理這些對象的整個生命周期。
優點:把應用的代碼量降到最低。最小代價和最小侵入式是松散耦合得以實現。IOC容器支持加載服務時的餓漢式初始化和懶加載
DI依賴註入是IOC的一個方面,不需要創建對象,隻需描述如何被創建,在配置文件中描述組件需要哪些服務,之後IOC容器進行組裝
IOC的註入方式:1、構造器依賴註入 2、Setter方法註入 3、工廠方法註入(很少使用)
Setter方法註入
通過Setter方法註入bean的屬性值或依賴的對象,是最常用的註入方式
<!-- property來配置屬性 name為屬性名 value為屬性值 --> <bean id="helloWorld" class="com.zhanghe.study.spring4.beans.helloworld.HelloWorld"> <property name="name" value="Spring Hello"/> </bean>
構造器註入
構造器註入需要提供相應的構造器
<!-- 可以使用index來指定參數的順序,默認是按照先後順序 --> <bean id="car" class="com.zhanghe.study.spring4.beans.beantest.Car"> <constructor-arg value="法拉利" index="0"/> <constructor-arg value="200" index="1"/> </bean>
但是如果存在重載的構造器的話,隻使用index索引方式無法進行精確匹配,還需要使用類型type來進行區分,index和type可以搭配使用
public Car(String brand, double price) { this.brand = brand; this.price = price; } public Car(String brand, int speed) { this.brand = brand; this.speed = speed; }
<bean id="car" class="com.zhanghe.study.spring4.beans.beantest.Car"> <constructor-arg value="法拉利" index="0"/> <constructor-arg value="20000.0" type="double"/> </bean> <bean id="car2" class="com.zhanghe.study.spring4.beans.beantest.Car"> <constructor-arg value="瑪莎拉蒂" index="0"/> <constructor-arg value="250" type="int"/> </bean>
到此這篇關於spring依賴註入深入理解的文章就介紹到這瞭,更多相關spring依賴註入內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Spring IOC中的Bean對象用法
- Spring Bean屬性註入的兩種方式詳解
- Spring IOC創建對象的兩種方式
- 基於Spring depends-on的使用詳解
- Spring依賴註入(DI)兩種方式的示例詳解