欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring中依賴注入(DI)幾種方式解讀

 更新時間:2024年01月16日 09:45:12   作者:加油當當  
這篇文章主要介紹了Spring中依賴注入(DI)幾種方式解讀,構造器依賴注入通過容器觸發(fā)一個類的構造器來實現(xiàn)的,該類有一系列參數(shù),每個參數(shù)代表一個對其他類的依賴,需要的朋友可以參考下

Spring依賴注入(DI)

構造器注入

  1. 構造器依賴注入通過容器觸發(fā)一個類的構造器來實現(xiàn)的,該類有一系列參數(shù),每個參數(shù)代表一個對其他類的依賴?!疽话悴挥谩?/li>
  2. 在構造調用者實例的同時,在構造方法中給屬性賦值,完成被調用者的實例化。即,使用構造器設置依賴關系;
  3. 優(yōu)點:對象初始化完成后便可獲得可使用的對象;
  4. 缺點:當需要注入的對象很多時,構造器參數(shù)列表將會很長;不夠靈活。若有多種注入方式,每種方式只需注入指定幾個依賴,那么就需要提供多個重載的構造函數(shù),麻煩;
  5. Spring容器會將每一個正在創(chuàng)建的 Bean 標識符放在一個"當前創(chuàng)建 Bean 池"中,Bean 標識符在創(chuàng)建過程中將一直保持在這個池中,因此如果在創(chuàng)建 Bean 過程中發(fā)現(xiàn)自己已經(jīng)在"當前創(chuàng)建 Bean 池"里時將拋出BeanCurrentlyInCreationException異常表示循環(huán)依賴;而對于創(chuàng)建完畢的 Bean 將從"當前創(chuàng)建 Bean 池"中清除掉;
  6. <constructor-arg> 標簽:一個<constructor-arg>表示構造方法一個參數(shù);
  7. <constructor-arg> 標簽屬性:
    • name:表示構造方法的形參名;
    • index:表示構造方法的參數(shù)的位置,參數(shù)從左往右位置是 0,1,2 的順序;
    • value:構造方法的形參類型是簡單類型的,使用value;
    • ref:構造方法的形參類型是引用類型的,使用ref;
  8. 代碼示例:
public Student(String myname,int myage,School myXueXiao){
System.out.print1n( "student的有參數(shù)構造方法");
this.name = myname;
this.age = myage;
this.school= myXueXiao;
}
 
<!--使用name屬性實現(xiàn)構造注入-->
<bean id="myStudent" class="com.bit.ba03.Student" >
<constructor-arg name="myage" value="20" />
<constructor-arg name="mySchool" ref="myXueXiao" />
<constructor-arg name="myname" value="周良"/>
</bean>
<!--使用index屬性-->
<bean id="myStudent2" class="com.bit.ba03.Student">
<constructor-arg index="1" value="22" />
<constructor-arg index="0" value="李四" />
<constructor-arg index="2" ref="myXueXiao" />
</bean>
<!--省略index,順序不能亂寫了-->
<bean id="myStudent3" class="com.bit.ba03.Student">
<constructor-arg value="張強強" />
<constructor-arg value="22" />
<constructor-arg ref="myXueXiao" />
</bean>

setter方法注入

  1. Setter方法注入是容器通過調用無參構造器或無參static工廠方法實例化bean之后,調用該bean的setter方法,即實現(xiàn)了基于setter的依賴注入;
  2. IOC Service Provider 通過調用成員變量提供的setter函數(shù)將被依賴對象注入給依賴類;
  3. 優(yōu)點:靈活??梢赃x擇性地注入需要的對象;
  4. 缺點:依賴對象初始化完成后由于尚未注入被依賴對象,因此還不能使用;

簡單類型的set注入

  • 簡單類型: spring中規(guī)定java的基本數(shù)據(jù)類型和String都是簡單類型;
  • set屬性會調用屬性中的set方法進行賦值,屬性是been中指定類中的屬性所以要求類中必須有set方法;
  • 先執(zhí)行構造方法創(chuàng)建對象,然后執(zhí)行set方法進行賦值;
  • 代碼:
public class Id {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
<bean id="xx" class="yyy.Id">
<property name="屬性名字" value="此屬性的值"/>
一個property只能給一個屬性賦值
<property....>
</bean>

引用類型set注入

  • 當指定 bean 的某屬性值為另一 bean 的實例時,通過 ref 指定它們間的引用關系。ref 的值必須為某 bean 的 id 值;
  • set屬性會調用屬性中的set方法進行賦值,屬性是been中指定類中的屬性所以要求類中必須有set方法;
  • 先執(zhí)行構造方法創(chuàng)建對象,然后執(zhí)行set方法進行賦值;
<bean id="xxx" class="yyy">
<property name="屬性名稱" ref="bean的id(對象的名稱)" />
</bean>

代碼:

public class student{
private string name;private int age;
private school school;
// setter
// toString()
}
<bean id="myStudent" class="com.bit.ba02.Student">
<!--引用類型的屬性賦值–->
<property name="school" ref="mySchool" />〈!-- setSchool(mySchool) -->
</bean>

到此這篇關于Spring中依賴注入(DI)幾種方式解讀的文章就介紹到這了,更多相關Spring依賴注入(DI)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 關于@Valid注解大全以及用法規(guī)范

    關于@Valid注解大全以及用法規(guī)范

    這篇文章主要介紹了關于@Valid注解大全以及用法規(guī)范,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 一篇文章帶你入門Java數(shù)據(jù)類型

    一篇文章帶你入門Java數(shù)據(jù)類型

    下面小編就為大家?guī)硪黄狫ava的基本數(shù)據(jù)類型)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-08-08
  • Spring Boot 2.X優(yōu)雅的解決跨域問題

    Spring Boot 2.X優(yōu)雅的解決跨域問題

    這篇文章主要給大家介紹了關于Spring Boot 2.X如何優(yōu)雅的解決跨域問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring Boot 2.X具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-03-03
  • Java Annotation Overview詳解

    Java Annotation Overview詳解

    這篇文章主要介紹了Java Annotation Overview,需要的朋友可以參考下
    2014-02-02
  • Java實現(xiàn)一個簡單的線程池代碼示例

    Java實現(xiàn)一個簡單的線程池代碼示例

    線程池是管理線程的一個池子,通過阻塞隊列管理任務,主要參數(shù)包括corePoolSize、maximumPoolSize、keepAliveTime等,這篇文章主要介紹了Java實現(xiàn)一個簡單的線程池的相關資料,需要的朋友可以參考下
    2024-09-09
  • Java并發(fā)編程之關鍵字volatile知識總結

    Java并發(fā)編程之關鍵字volatile知識總結

    今天帶大家學習java的相關知識,文章圍繞著Java關鍵字volatile展開,文中有非常詳細的知識總結,需要的朋友可以參考下
    2021-06-06
  • Jexcel實現(xiàn)按一定規(guī)則分割excel文件的方法

    Jexcel實現(xiàn)按一定規(guī)則分割excel文件的方法

    這篇文章主要介紹了Jexcel實現(xiàn)按一定規(guī)則分割excel文件的方法,涉及java操作Excel文件的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • intelliJ IDEA 多行選中相同內容的快捷鍵分享

    intelliJ IDEA 多行選中相同內容的快捷鍵分享

    這篇文章主要介紹了intelliJ IDEA 多行選中相同內容的快捷鍵分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 在Mac下IDEA安裝并使用protobuf方式(Java)

    在Mac下IDEA安裝并使用protobuf方式(Java)

    這篇文章主要介紹了在Mac下IDEA安裝并使用protobuf方式(Java),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Spring Boot 分庫分表策略示例展示

    Spring Boot 分庫分表策略示例展示

    分庫分表是為了應對大規(guī)模數(shù)據(jù)和高并發(fā)請求,提高系統(tǒng)的性能和可擴展性,以下是如何在 Spring Boot 中實現(xiàn)分庫分表的詳細策略,感興趣的朋友一起看看吧
    2024-08-08

最新評論