欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Spring依賴注入

系統(tǒng) 1705 0

轉(zhuǎn)自: http://ganshisheng.iteye.com/blog/438608

一、依賴注入(DI)簡(jiǎn)介
依賴注入背后的基本原理是對(duì)象之間的依賴關(guān)系,可以通過(guò)以下幾種方式來(lái)實(shí)現(xiàn):構(gòu)造器的參數(shù)、工廠方法的參數(shù),或給由構(gòu)造函數(shù)或者工廠方法創(chuàng)建的對(duì)象設(shè)置屬性。因此,容器的工作就是創(chuàng)建bean時(shí)注入那些依賴關(guān)系。相對(duì)于由bean自己來(lái)控制其實(shí)例化、直接在構(gòu)造器中指定依賴關(guān)系或者類似服務(wù)定位器模式這3種自主控制依賴關(guān)系注入的方法來(lái)說(shuō),控制從根本上發(fā)生了倒轉(zhuǎn),這也正是控制反轉(zhuǎn)名字的由來(lái)。

依賴注入主要有兩種注入方式,即構(gòu)造器注入和Setter注入。

1、構(gòu)造器注入
基于構(gòu)造器的依賴注入是通過(guò)調(diào)用帶參數(shù)的構(gòu)造器來(lái)實(shí)現(xiàn),每個(gè)參數(shù)代表著一個(gè)依賴。下面展示了用構(gòu)造器參數(shù)來(lái)注入依賴關(guān)系的例子。

先創(chuàng)建一個(gè)對(duì)象(bean)

Java代碼 收藏代碼
  1. public class HelloWorld{
  2. private Stringmsg;
  3. //需要一個(gè)默認(rèn)無(wú)參構(gòu)造器
  4. public HelloWorld(){}
  5. public HelloWorld(Stringmsg){
  6. this .msg=msg;
  7. }
  8. public StringgetMsg(){
  9. return msg;
  10. }
  11. public void setMsg(Stringmsg){
  12. this .msg=msg;
  13. }
  14. }


再修改配置文件applicationContext.xml,實(shí)例化bean

Java代碼 收藏代碼
  1. <beanid= "hello" class = "com.spring.demo.HelloWorld" >
  2. <constructor-argindex= "0" >
  3. <value>HelloWorld!</value>
  4. </constructor-arg>
  5. </bean>


最后測(cè)試是否能夠得到注入的bean,并打印出對(duì)象的屬性。
Java代碼 收藏代碼
  1. public static void main(String[]args){
  2. //讀取配置文件,獲得BeanFactory
  3. ApplicationContextcontext= new ClassPathXmlApplicationContext( "applicationContext.xml" );
  4. BeanFactoryfactory=context;
  5. HelloWorldhello=(HelloWorld)factory.getBean( "hello" );
  6. System.out.println(hello.getMsg());
  7. }


2、Setter注入
通過(guò)調(diào)用無(wú)參構(gòu)造器或無(wú)參static工廠方法實(shí)例化bean之后,調(diào)用該bean的setter方法,即可實(shí)現(xiàn)基于setter的依賴注入。

創(chuàng)建一個(gè)對(duì)象

Java代碼 收藏代碼
  1. public class HelloWorld{
  2. private Stringmsg;
  3. public StringgetMsg(){
  4. return msg;
  5. }
  6. public void setMsg(Stringmsg){
  7. this .msg=msg;
  8. }
  9. }


修改配置文件applicationContext.xml,實(shí)例化bean

Java代碼 收藏代碼
  1. <beanid= "helloBean" class = "com.spring.demo.HelloWorld" >
  2. <propertyname= "msg" value= "HelloWorld!" />
  3. </bean>


測(cè)試類,獲得注入的bean

Java代碼 收藏代碼
  1. public static void main(String[]args){
  2. //讀取配置文件,實(shí)例化IOC容器
  3. ApplicationContextcontext= new ClassPathXmlApplicationContext( "applicationContext.xml" );
  4. BeanFactoryfactory=context;
  5. HelloWorldhello=(HelloWorld)factory.getBean( "helloBean" );
  6. System.out.println(hello.getMsg());
  7. }

3. 接口注入( 不推薦


處理bean依賴關(guān)系通常按以下步驟進(jìn)行:

1.根據(jù)定義bean的配置創(chuàng)建并初始化BeanFactory實(shí)例

2.每個(gè)bean的依賴將以屬性、構(gòu)造器參數(shù)、或靜態(tài)工廠方法參數(shù)的形式出現(xiàn)。當(dāng)這些bean被實(shí)際創(chuàng)建時(shí),這些依賴也將會(huì)提供給該bean。

3.每個(gè)屬性或構(gòu)造器參數(shù)既可以是一個(gè)實(shí)際的值,也可以是對(duì)該容器中另一個(gè)bean的引用。

4.每個(gè)指定的屬性或構(gòu)造器參數(shù)值必須能夠被轉(zhuǎn)換成特定的格式或構(gòu)造參數(shù)所需的類型。

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

Spring依賴注入


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久久精彩视频 | 99久久中文字幕伊人 | 99久久精品免费看国产一区二区 | 在线中文视频 | 无遮挡又黄又爽又色的动态图1000 | 亚洲第一黄色网址 | 日本亚洲精品色婷婷在线影院 | 国产精品福利自产拍网站 | 一级视频在线免费观看 | 亚洲精品国产第一区二区多人 | 国产亚洲欧美一区二区 | 亚洲免费在线视频 | 亚洲国产路线1路线2路线 | 亚洲国产91| 国产精品久久久久久久久 | 成人黄色一级视频 | 成人自拍视频网 | 99精品在线观看视频 | 九九久久国产精品 | 任你操免费视频 | 亚洲天堂影院 | 一级黄色片子 | 五月激情婷婷六月 | 久久久国产99久久国产首页 | 国产精品美女久久久久久 | 日本高清动作片www网站免费 | 精品国产理论在线观看不卡 | 成人精品视频一区二区三区 | 68久久久久欧美精品观看 | 精品国产一区二区国模嫣然 | 久草手机在线播放 | 69国产精品视频免费 | 欧美成人精品不卡视频在线观看 | 精品成人| 欧美三级 在线播放 | 精品国产一级毛片 | 婷婷香蕉 | 亚洲精品视 | 狠狠干网| 国产一区二区三区不卡在线观看 | 欧美日韩国产一区二区三区 |