黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Spring內(nèi)核研究-管理bean之間的關(guān)系二(自動(dòng)依

系統(tǒng) 2297 0

?自動(dòng)依賴檢查可以保證所有java bean中的屬性(set方法)都在Spring中正確的配置。如果在一個(gè)java bean中定義了一個(gè)name屬性,并且也setName方法。那么在開(kāi)啟自動(dòng)依賴檢查功能后,就必須在Spring中定義這個(gè)屬性,否則Spring將拋出異常。

請(qǐng)看下面的例子:
Dao.java
包含一個(gè)setName方法。
    package research.spring.beanfactory.ch3;
public class Dao {
private String name;
public void setName(String name) {
this.name = name;
}
}
  
?
? context.xml:
?
      <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean name="dao" class="research.spring.beanfactory.ch3.Dao">  </bean>
<bean id="database" class="research.spring.beanfactory.ch3.Database">
</bean>
</beans>

    
?
?我們?cè)赾ontext.xml沒(méi)有定義Dao的name屬性。上面的配置,Spring可以正常的實(shí)例化Dao對(duì)象。
下面我們修改context.xml:
我們通過(guò)dependency-check=all,在Dao上增加了自動(dòng)依賴檢查的功能。
?
?
        <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean name="dao" class="research.spring.beanfactory.ch3.Dao" dependency-check="all" >    </bean>
<bean id="database" class="research.spring.beanfactory.ch3.Database">
</bean>
</beans>
      
?當(dāng)配置依賴檢查時(shí),Spring實(shí)例化Dao時(shí)會(huì)拋出一個(gè)異常:
Spring定義了4種依賴檢查的策略:
?
  • none(默認(rèn))
??? 不進(jìn)行依賴檢查。
  • simple
??? 只對(duì)簡(jiǎn)單屬性和集合中的簡(jiǎn)單屬性進(jìn)行檢查。不對(duì)依賴的對(duì)象檢查。
  • objects
??? 只對(duì)為對(duì)象類型的屬性進(jìn)行檢查。
  • all
??? 對(duì)所有類型進(jìn)行檢查。
?
??? 如果把上面例子里的context.xml改成這樣:
          <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean name="dao" class="research.spring.beanfactory.ch3.Dao" dependency-check="objects" >    </bean>
<bean id="database" class="research.spring.beanfactory.ch3.Database">
</bean>
</beans>
        
?
Spring將不會(huì)拋出異常,因?yàn)閛bjects只對(duì)依賴的對(duì)象進(jìn)行檢查。
?
dependency-check在Spring中又以下的限制:
?
  1. ?不能對(duì)構(gòu)造函數(shù)中的參數(shù)進(jìn)行檢查。
  2. ?即使屬性中有默認(rèn)值,只要包含了set方法,那么dependency-check仍然需要檢查Spring中是否配置了這個(gè)屬性。
        package research.spring.beanfactory.ch3;
public class Dao {
private Database database;
private String name="chenjie";
//dependency-check仍然會(huì)檢查這個(gè)屬性是否配置注入

public void setName(String name) {
this.name = name;
}
public void setDatabase(Database database) {
this.database = database;
}
}
      

?

即使Dao設(shè)置里name得默認(rèn)值,但是只要有setName方法,dependency-check仍然會(huì)判斷是否在配置文件中設(shè)置了setName對(duì)應(yīng)的注入。

Spring內(nèi)核研究-管理bean之間的關(guān)系二(自動(dòng)依賴檢查)


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

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

您的支持是博主寫(xiě)作最大的動(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ì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論