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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring依赖注入方式

發布時間:2025/3/17 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring依赖注入方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、依賴注入(DI)簡介
??? 依賴注入背后的基本原理是對象之間的依賴關系,可以通過以下幾種方式來實現:構造器的參數、工廠方法的參數,或給由構造函數或者工廠方法創建的對象設置屬性。因此,容器的工作就是創建bean時注入那些依賴關系。相對于由bean自己來控制其實例化、直接在構造器中指定依賴關系或者類似服務定位器模式這3種自主控制依賴關系注入的方法來說,控制從根本上發生了倒轉,這也正是控制反轉名字的由來。

依賴注入主要有兩種注入方式,即構造器注入和Setter注入。

二、構造器注入
基于構造器的依賴注入是通過調用帶參數的構造器來實現,每個參數代表著一個依賴。下面展示了用構造器參數來注入依賴關系的例子。

先創建一個對象(bean)
Java代碼
  • public?class?HelloWorld?{ ??
  • ????private?String?msg; ??
  • ??
  • ????//需要一個默認無參構造器 ??
  • ????public?HelloWorld(){} ??
  • ???? ??
  • ????public?HelloWorld(String?msg){ ??
  • ????????this.msg?=?msg; ??
  • ????} ??
  • ???? ??
  • ????public?String?getMsg()?{ ??
  • ????????return?msg; ??
  • ????} ??
  • ????public?void?setMsg(String?msg)?{ ??
  • ????????this.msg?=?msg; ??
  • ????} ??
  • }??
  • public class HelloWorld {private String msg;//需要一個默認無參構造器public HelloWorld(){}public HelloWorld(String msg){this.msg = msg;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;} }

    再修改配置文件applicationContext.xml,實例化bean

    Java代碼
  • <bean?id="hello"?class="com.spring.demo.HelloWorld">?? ??
  • ?????<constructor-arg?index="0">? ??
  • ???????????<value>HelloWorld!</value>? ??
  • ???????</constructor-arg>?? ??
  • ??</bean>??
  • <bean id="hello" class="com.spring.demo.HelloWorld"> <constructor-arg index="0"> <value>HelloWorld!</value> </constructor-arg> </bean>

    最后測試是否能夠得到注入的bean,并打印出對象的屬性。
    Java代碼
  • public?static?void?main(String[]?args){ ??
  • ????????//讀取配置文件,獲得BeanFactory ??
  • ????????ApplicationContext?context?=?new?ClassPathXmlApplicationContext("applicationContext.xml"); ??
  • ????????BeanFactory?factory?=?context; ??
  • ???????? ??
  • ????????HelloWorld?hello?=?(HelloWorld)factory.getBean("hello"); ??
  • ???????? ??
  • ????????System.out.println(hello.getMsg());? ??
  • ????}??
  • public static void main(String[] args){//讀取配置文件,獲得BeanFactoryApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");BeanFactory factory = context;HelloWorld hello = (HelloWorld)factory.getBean("hello");System.out.println(hello.getMsg()); }

    三、Setter注入
    通過調用無參構造器或無參static工廠方法實例化bean之后,調用該bean的setter方法,即可實現基于setter的依賴注入。

    創建一個對象

    Java代碼
  • public?class?HelloWorld?{ ??
  • ????private?String?msg; ??
  • ??
  • ????public?String?getMsg()?{ ??
  • ????????return?msg; ??
  • ????} ??
  • ????public?void?setMsg(String?msg)?{ ??
  • ????????this.msg?=?msg; ??
  • ????} ??
  • }??
  • public class HelloWorld {private String msg;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;} }

    修改配置文件applicationContext.xml,實例化bean

    Java代碼
  • <bean?id="helloBean"?class="com.spring.demo.HelloWorld"> ??
  • ???????<property?name="msg"?value="Hello?World!"/> ??
  • ?</bean>????
  • <bean id="helloBean" class="com.spring.demo.HelloWorld"><property name="msg" value="Hello World!"/></bean>

    測試類,獲得注入的bean

    Java代碼
  • public?static?void?main(String[]?args){ ??
  • ????//讀取配置文件,實例化IOC容器 ??
  • ????ApplicationContext?context?=?new?ClassPathXmlApplicationContext("applicationContext.xml"); ??
  • ????BeanFactory?factory?=?context; ??
  • ???? ??
  • ????HelloWorld?hello?=?(HelloWorld)factory.getBean("helloBean"); ??
  • ???? ??
  • ????System.out.println(hello.getMsg());? ??
  • }??
  • public static void main(String[] args){//讀取配置文件,實例化IOC容器ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");BeanFactory factory = context;HelloWorld hello = (HelloWorld)factory.getBean("helloBean");System.out.println(hello.getMsg()); }

    處理bean依賴關系通常按以下步驟進行:

    ??? 1.根據定義bean的配置創建并初始化BeanFactory實例

    ??? 2.每個bean的依賴將以屬性、構造器參數、或靜態工廠方法參數的形式出現。當這些bean被實際創建時,這些依賴也將會提供給該bean。

    ??? 3.每個屬性或構造器參數既可以是一個實際的值,也可以是對該容器中另一個bean的引用。

    ??? 4.每個指定的屬性或構造器參數值必須能夠被轉換成特定的格式或構造參數所需的類型。

    ??? Spring會在容器被創建時驗證容器中每個bean的配置,包括驗證那些bean所引用的屬性是否指向一個有效的bean。在bean被實際創建之前,bean的屬性并不會被設置。伴隨著bean被實際創建,作為該bean的依賴bean以及依賴bean的依賴bean也將被創建和分配。

    總結

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

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