spring依賴注入深入理解
IOC&&DI
IOC(Inversion of Control)一般分為兩種類型:依賴注入DI(Dependency Injection)和依賴查找(Dependency Lookup)
org.springframework.beans.factory.BeanFactory是IOC容器的具體實現(xiàn),是Spring IOC容器的核心接口
Spring IOC負責(zé)創(chuàng)建對象,管理對象,裝配對象,配置對象,并且管理這些對象的整個生命周期。
優(yōu)點:把應(yīng)用的代碼量降到最低。最小代價和最小侵入式是松散耦合得以實現(xiàn)。IOC容器支持加載服務(wù)時的餓漢式初始化和懶加載
DI依賴注入是IOC的一個方面,不需要創(chuàng)建對象,只需描述如何被創(chuàng)建,在配置文件中描述組件需要哪些服務(wù),之后IOC容器進行組裝
IOC的注入方式:1、構(gòu)造器依賴注入 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>
構(gòu)造器注入
構(gòu)造器注入需要提供相應(yīng)的構(gòu)造器
<!-- 可以使用index來指定參數(shù)的順序,默認是按照先后順序 --> <bean id="car" class="com.zhanghe.study.spring4.beans.beantest.Car"> <constructor-arg value="法拉利" index="0"/> <constructor-arg value="200" index="1"/> </bean>
但是如果存在重載的構(gòu)造器的話,只使用index索引方式無法進行精確匹配,還需要使用類型type來進行區(qū)分,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>
到此這篇關(guān)于spring依賴注入深入理解的文章就介紹到這了,更多相關(guān)spring依賴注入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Data JPA 之 JpaRepository的使用
這篇文章主要介紹了Spring Data JPA 之 JpaRepository的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Java結(jié)合uniapp實現(xiàn)驗證碼功能的示例詳解
UniApp 是一個基于 Vue.js 的跨平臺應(yīng)用開發(fā)框架,允許開發(fā)者使用統(tǒng)一的代碼庫來構(gòu)建多平臺應(yīng)用,這篇文章將給大家介紹Java結(jié)合uniapp實現(xiàn)驗證碼功能,文中通過詳細的代碼示例講解的非常詳細,需要的朋友可以參考下2024-07-07
SpringSessionRedis配置及發(fā)現(xiàn)的問題講解
今天小編就為大家分享一篇關(guān)于SpringSessionRedis配置及發(fā)現(xiàn)的問題講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
spring-boot-starter-thymeleaf加載外部html文件方式
本文介紹了在SpringMVC中使用Thymeleaf模板引擎加載外部HTML文件的方法,以及在Spring Boot中使用Thymeleaf的基本步驟,包括引入依賴、創(chuàng)建Controller、創(chuàng)建HTML文件、參數(shù)化訪問、熱加載和熱更新文件2025-02-02
mybatis條件語句中帶數(shù)組參數(shù)的處理
這篇文章主要介紹了mybatis條件語句中帶數(shù)組參數(shù)的處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09

