欧美三区_成人在线免费观看视频_欧美极品少妇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)論
主站蜘蛛池模板: 国产一区二 | 青草青在线 | 久久精品.com | 色爱综合区五月小说 | 日本精品区 | 欧美一区在线观看视频 | 奇米影视第七色 | 最新av在线网址 | 伊人久久99亚洲精品久久频 | 国产精品久久九九 | 国产在线精品一区 | 一本大道香蕉中文日本不卡高清二区 | 国产高清精品一区二区三区 | 色综合天天综合网国产成人网 | 成人午夜在线视频 | 碰超丶在线免费 | www.人人干| 亚洲欧洲另类 | 欧美videosex性极品hd | 色网综合 | 免费在线看a | 亚洲午夜精品一区二区 | 精品一区二区三区的国产在线观看 | 色狠狠色狠狠综合一区 | 一区中文| 97日日摸天天碰免费视频 | av色在线观看 | 欧美日韩精品一区二区三区视频 | 亚洲 久久 | A片扒开双腿进入做视频 | 亚洲97 | 欧美又黄又嫩大片a级 | 精品一区精品二区 | 人人性人人性碰国产 | 波多野结衣久久一区二区 | 国产拳头交一区二区 | 涩涩屋av| 日日摸狠狠的摸夜夜摸 | 亚洲久草 | 中文字幕成人av | 日韩欧美专区 |