隨筆 - 4  文章 - 10  trackbacks - 0
          <2007年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          4.4用ref的屬性指定依賴(lài)的3種模式
          (1) 用local屬性指定
           如果一個(gè)Bean與被參考引用的Bean在同一個(gè)XML文件中而且被參考引用的Bean是用id來(lái)命名的,那么就可以使用ref的local屬性.這樣會(huì)使XML

          解釋器更早地在XML文檔解釋時(shí),驗(yàn)證Bean的id.local屬性的值必須與被參考引用的Bean的id屬性一致

          4.5 Bean自動(dòng)裝配的5種模式
          (1)使用byName模式
             byName模式指的就是通過(guò)Bean的屬性名字進(jìn)行自動(dòng)裝配。在Spring的配置文檔XML中,查找一個(gè)與將要裝配的屬性同名字的Bean.
             在配置文檔中,有一個(gè)id為HelloWorld的Bean被設(shè)置為通過(guò)byName自動(dòng)裝配,Helloworld.java包含一個(gè)date變量,Spring就會(huì)查找一個(gè)叫

          做date的Bean定義,然后用它來(lái)設(shè)置date屬性。
          ****HelloWorld*****
          package com.gc.action;
          import java.util.Date;
          public class HelloWorld{
          private String msg=null;
          private Date date=null;
          public void setMsg(String msg){
           this.msg=msg;
          }
          public String getMsg(){
          return this.msg;
          }
          public void setDate(Date date){
          this.date=date;
          }
          public Date getDate(){
          return this.date;
          }
          }

          配置文檔config.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 id="HelloWorld" class="com.gc.action.HelloWorld" autowire="byName">
            <property name="msg">
             <value>HelloWorld</value>
          </property>
          </bean>
          <bean id="date" class="java.util.Date"/>
          <beans>

          (2)使用ByType模式
             byType模式指的就是如果XML中正好有一個(gè)與類(lèi)型一樣的Bean,就自動(dòng)裝配這個(gè)屬性。如果有多于一個(gè)這樣的Bean,就拋出一個(gè)異常,指出可

          能不能對(duì)那個(gè)Bean使用byType的自動(dòng)裝配。

             在配置文檔中,有一個(gè)id為HelloWorld的Bean被設(shè)置為通過(guò)byType自動(dòng)裝配,Helloworld.java包含一個(gè)date變量,Spring就會(huì)查找一個(gè)類(lèi)

          型為date的Bean定義,然后用它來(lái)設(shè)置date屬性。
          ****HelloWorld*****
          同上

          配置文檔config.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 id="HelloWorld" class="com.gc.action.HelloWorld" autowire="byType">
            <property name="msg">
             <value>HelloWorld</value>
          </property>
          </bean>
          <bean id="date" class="java.util.Date"/>
          <beans>

          (3)使用constructor模式
             constructor模式指的就是根據(jù)構(gòu)造函數(shù)的參數(shù)進(jìn)行自動(dòng)裝配。在配置文檔中,有一個(gè)id為HelloWorld的Bean被設(shè)置為通過(guò)constructor自動(dòng)

          裝配,HelloWorld.java包含一個(gè)構(gòu)造函數(shù)方法,spring就會(huì)根據(jù)構(gòu)造函數(shù)的參數(shù)查找合適類(lèi)型的Bean定義,然后用它來(lái)設(shè)置購(gòu)置函數(shù)的參數(shù)的

          值。
          ****HelloWorld*****
          package com.gc.action;
          import java.util.Date;
          public class HelloWorld{
          private String msg=null;
          private Date date=null;
          public HelloWorld(Date date)
          this.date=date;
          }
          public void setMsg(String msg){
           this.msg=msg;
          }
          public String getMsg(){
          return this.msg;
          }
          public void setDate(Date date){
          this.date=date;
          }
          public Date getDate(){
          return this.date;
          }
          }

          配置文檔config.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 id="HelloWorld" class="com.gc.action.HelloWorld" autowire="constructor">
            <property name="msg">
             <value>HelloWorld</value>
          </property>
          </bean>
          <bean id="date" class="java.util.Date"/>
          <beans>

          (4)autodetect模式指的就是通過(guò)對(duì)Bean檢查類(lèi)的內(nèi)部來(lái)選擇constructor或byType.如果先找到constructor就用constructor;如果沒(méi)有

          constructor,而找到byType,就用byType.
          ****HelloWorld****
          同上(3)

          配置文件config.xml
          autowire="autodetect"

          (5)no模式指的就是不使用自動(dòng)裝配。
          ****HelloWorld****
          同上(3)

          配置文件config.xml
          autowire="no"
          小結(jié):對(duì)于大型的應(yīng)用,不鼓勵(lì)使用自動(dòng)裝配,因?yàn)樗コ藚⒖家蕾?lài)的透明性和清晰性。有了自動(dòng)裝配后,可以減少開(kāi)發(fā)人員的輸入問(wèn)題,但

          是卻使開(kāi)發(fā)人員很難看出Bean的每個(gè)屬性都是否設(shè)定完成。
          完成


          4.6 Bean依賴(lài)檢查的4種模式
          就像自動(dòng)裝配功能一樣,依賴(lài)檢查能夠分別對(duì)每一個(gè)Bean應(yīng)用或取消應(yīng)用。默認(rèn)的是不檢查依賴(lài)關(guān)系。使用Bean元素的dependency-check屬性

          來(lái)指定Bean定義的依賴(lài)檢查共有4種模式:simple.object.all.none
          借助依賴(lài)檢查來(lái)實(shí)現(xiàn)查看Bean的每個(gè)屬性是否都設(shè)定完成的功能
          (1)使用simple模式
            simple模式指的是對(duì)基本類(lèi)型,字符串和集合進(jìn)行依賴(lài)檢查。
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN/EN"
           "http://www.springframework.org/dtd/spring-beans.dtd">
           <beans>
          <bean id="HelloWorld" class="com.gc.action.HelloWorld" autowire="autodetect" dependency-check="simple">
           </bean>
           <bean id="date" class="java.util.Date"/>
           </beans>

          (2)使用object模式
            object模式指的是對(duì)依賴(lài)對(duì)象進(jìn)行依賴(lài)檢查.
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN/EN"
           "http://www.springframework.org/dtd/spring-beans.dtd">
           <beans>
          <bean id="HelloWorld" class="com.gc.action.HelloWorld" autowire="autodetect" dependency-check="object">
           </bean>
           <bean id="date" class="java.util.Date"/>
           </beans>

          (3)使用all模式
            all模式的是對(duì)全部屬性進(jìn)行依賴(lài)檢查
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN/EN"
           "http://www.springframework.org/dtd/spring-beans.dtd">
           <beans>
          <bean id="HelloWorld" class="com.gc.action.HelloWorld" autowire="autodetect" dependency-check="all">
           </bean>
           <bean id="date" class="java.util.Date"/>
           </beans>


          (4)使用none模式
            none模式指的是不進(jìn)行依賴(lài)檢查
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN/EN"
           "http://www.springframework.org/dtd/spring-beans.dtd">
           <beans>
          <bean id="HelloWorld" class="com.gc.action.HelloWorld" autowire="autodetect" dependency-check="none">
           </bean>
           <bean id="date" class="java.util.Date"/>
           </beans>
          小結(jié):一般情況下,依賴(lài)檢查和自動(dòng)裝配結(jié)合使用。當(dāng)開(kāi)發(fā)人員想看Bean的每個(gè)屬性是否都設(shè)定完成的時(shí)候,依賴(lài)檢查的作用顯得更大。當(dāng)依

          賴(lài)檢查和自動(dòng)裝配結(jié)合使用時(shí),依賴(lài)檢查會(huì)在自動(dòng)裝配完后發(fā)生。當(dāng)Bean的屬性都有默認(rèn)的值,或者不需要對(duì)Bean的屬性是否都被設(shè)置到Bean

          上檢查時(shí),依賴(lài)檢查的作用就不是很大了,

          4.7 集合的注入方式
          (1).List
          ****HelloWorld****
          package com.gc.action;
          public class HelloWorld{
          private List msg=null;
          public void setMsg(List msg){
          this.msg=msg;
          }
          public List getMsg(){
          return this.msg;
          }
          }

          配置文檔
          <beans>
          <bean id="HelloWorld" class=com.gc.action.HelloWorld">
          <property name="msg">
          <list>
          <value>gf</value>
          <value>gd</value>
          <value>HelloWorld</value>
          </list>
          </property>
          <beans>

          (2).Set
          ****HelloWorld****
          package com.gc.action;
          public class HelloWorld{
          private Set msg=null;
          public void setMsg(Set msg){
          this.msg=msg;
          }
          public Set getMsg(){
          return this.msg;
          }
          }

          配置文檔
          <beans>
          <bean id="HelloWorld" class=com.gc.action.HelloWorld">
          <property name="msg">
          <set>
          <value>gf</value>
          <value>gd</value>
          <value>HelloWorld</value>
          </set>
          </property>
          <beans>

          (3).Map
          ****HelloWorld****
          package com.gc.action;
          public class HelloWorld{
          private Map msg=null;
          public void setMsg(Map msg){
          this.msg=msg;
          }
          public Map getMsg(){
          return this.msg;
          }
          }

          配置文檔
          <beans>
          <bean id="HelloWorld" class=com.gc.action.HelloWorld">
          <property name="msg">
          <Map>
          <entry key="gf">
          <value>HelloWorld</value>
          </entry>
          <entry key="gd">
          <value>HelloWorld</value>
          </entry>
          </Map>
          </property>
          <beans>

          (4).Properties
          ****HelloWorld****
          package com.gc.action;
          public class HelloWorld{
          private Properties msg=null;
          public void setMsg(Properties msg){
          this.msg=msg;
          }
          public Properties getMsg(){
          return this.msg;
          }
          }

          配置文檔
          <beans>
          <bean id="HelloWorld" class=com.gc.action.HelloWorld">
          <property name="msg">
          <props>
          <prop key="gf">HelloWorld</prop>
          <prop key="gd">HelloWorld</prop>
          </props>
          </property>
          <beans>
          小結(jié):對(duì)于List.set.Map和Properties來(lái)說(shuō)都是類(lèi)似的,就是都要把要注入的信息注入到集合中去,然后在把集合注入到相關(guān)的Bean中.

          posted on 2007-12-25 15:12 冬天出走的豬 閱讀(1024) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 合川市| 济宁市| 定南县| 道孚县| 府谷县| 海兴县| 印江| 五寨县| 唐海县| 安陆市| 离岛区| 葫芦岛市| 枝江市| 泉州市| 巧家县| 咸丰县| 呼玛县| 盐池县| 社旗县| 桑日县| 安丘市| 鄂尔多斯市| 瑞金市| 永仁县| 邵阳市| 曲沃县| 黄梅县| 诸城市| 木兰县| 湘潭县| 额尔古纳市| 延长县| 涞源县| 清远市| 大同县| 唐山市| 金华市| 灵宝市| 宾阳县| 磐安县| 锡林郭勒盟|