日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring 依赖注入的3种方式

發布時間:2025/7/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring 依赖注入的3种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

  在實際環境中實現IoC容器的方式主要分為兩大類,一類是依賴查找,依賴查找是通過資源定位,把對應的資源查找回來;另一類則是依賴注入,而Spring主要使用的是依賴注入。一般而言,依賴注入可以分為3種方式。
  ?構造器注入。
  ?setter注入。
  ?接口注入。
  構造器注入和setter注入是主要的方式,而接口注入是從別的地方注入的方式,比如在Web工程中,配置的數據源往往是通過服務器(比如Tomcat)去配置的,這個時候可以用JNDI的形式通過接口將它注入Spring IoC容器中來。下面對它們進行詳細講解。

構造器注入

  構造器注入依賴于構造方法實現,而構造方法可以是有參數的或者是無參數的。在大部分的情況下,我們都是通過類的構造方法來創建類對象,Spring也可以采用反射的方式,通過使用構造方法來完成注入,這就是構造器注入的原理。

public class Role {private Long id;private String roleName;private String note;public Role(String roleName, String note) {this.roleName = roleName;this.note = note;}/******** setter and getter *******/ }

  這個時候是沒有辦法利用無參數的構造方法去創建對象的,為了使Spring能夠正確創建這個對象,可以像代碼清單那樣去做。

<bean id="role1" class="com.ssm.chapter9.pojo.Role"><constructor-arg index="0" value="總經理"/><constructor-arg index="1" value="公司管理者"/> </bean>

  constructorarg元素用于定義類構造方法的參數,其中index用于定義參數的位置,而value則是設置值,通過這樣的定義Spring便知道使用Role(String,String)這樣的構造方法去創建對象了。這樣注入還是比較簡單的,但是缺點也很明顯,由于這里的參數比較少,所以可讀性還是不錯的,但是如果參數很多,那么這種構造方法就比較復雜了,這個時候應該考慮setter注入。

使用setter注入

  setter注入是Spring中最主流的注入方式,它利用JavaBean規范所定義的setter方法來完成注入,靈活且可讀性高。它消除了使用構造器注入時出現多個參數的可能性,首先可以把構造方法聲明為無參數的,然后使用setter注入為其設置對應的值,其實也是通過Java反射技術得以現實的。這里假設先在代碼清單中為Role類加入一個沒有參數的構造方法,然后做代碼清單的配置。

<bean id="role2" class="com.ssm.chapter9.pojo.Role"><property name="roleName" value="高級工程師"/><property name="note" value="重要人員"/> </bean

  這樣Spring就會通過反射調用沒有參數的構造方法生成對象,同時通過反射對應的setter注入配置的值了。這種方式是Spring最為主要的方式,在實際工作中使用廣泛。

接口注入

  有些時候資源并非來自于自身系統,而是來自于外界,比如數據庫連接資源完全可以在Tomcat下配置,然后通過JNDI的形式去獲取它,這樣數據庫連接資源是屬于開發工程外的資源,這個時候我們可以采用接口注入的形式來獲取它

轉載于:https://www.cnblogs.com/ooo0/p/10962360.html

總結

以上是生活随笔為你收集整理的spring 依赖注入的3种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。