當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring依赖注入方式
生活随笔
收集整理的這篇文章主要介紹了
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也將被創建和分配。
??? 依賴注入背后的基本原理是對象之間的依賴關系,可以通過以下幾種方式來實現:構造器的參數、工廠方法的參數,或給由構造函數或者工廠方法創建的對象設置屬性。因此,容器的工作就是創建bean時注入那些依賴關系。相對于由bean自己來控制其實例化、直接在構造器中指定依賴關系或者類似服務定位器模式這3種自主控制依賴關系注入的方法來說,控制從根本上發生了倒轉,這也正是控制反轉名字的由來。
依賴注入主要有兩種注入方式,即構造器注入和Setter注入。
二、構造器注入
基于構造器的依賴注入是通過調用帶參數的構造器來實現,每個參數代表著一個依賴。下面展示了用構造器參數來注入依賴關系的例子。
先創建一個對象(bean)
Java代碼
再修改配置文件applicationContext.xml,實例化bean
Java代碼
最后測試是否能夠得到注入的bean,并打印出對象的屬性。
Java代碼
三、Setter注入
通過調用無參構造器或無參static工廠方法實例化bean之后,調用該bean的setter方法,即可實現基于setter的依賴注入。
創建一個對象
Java代碼
修改配置文件applicationContext.xml,實例化bean
Java代碼
測試類,獲得注入的bean
Java代碼
處理bean依賴關系通常按以下步驟進行:
??? 1.根據定義bean的配置創建并初始化BeanFactory實例
??? 2.每個bean的依賴將以屬性、構造器參數、或靜態工廠方法參數的形式出現。當這些bean被實際創建時,這些依賴也將會提供給該bean。
??? 3.每個屬性或構造器參數既可以是一個實際的值,也可以是對該容器中另一個bean的引用。
??? 4.每個指定的屬性或構造器參數值必須能夠被轉換成特定的格式或構造參數所需的類型。
??? Spring會在容器被創建時驗證容器中每個bean的配置,包括驗證那些bean所引用的屬性是否指向一個有效的bean。在bean被實際創建之前,bean的屬性并不會被設置。伴隨著bean被實際創建,作為該bean的依賴bean以及依賴bean的依賴bean也將被創建和分配。
總結
以上是生活随笔為你收集整理的Spring依赖注入方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FarPoint 应用总结
- 下一篇: SpringBoot2.0 基础案例(1