StevenBot-Saltsam

          眼睛能裝下世界,為何卻裝不下眼淚? 一只風箏一輩子只為一根線冒險。 那不是一場游戲,為何總有一根線牽著心懷,隱隱作疼? 那不是一段邂逅,為何飄在橋上的影子,總纏進夢鄉? 那不是一個夢境,為何你的溫柔私語,總是不經意的響起?

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          datas link

          OSChinal Sources codes Library

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          spring提供了filed的值注入和method的返回值注入

          spring提供了filed的值注入和method的返回值注入。 

          1、Field值的注入 

          filed值注入需要使用org.springframework.beans.factory.config.FieldRetrievingFactoryBean來獲取類的靜態變量。 

          例如,我們通常在接口中定義常量: 

          view plaincopy to clipboardprint?package com.baobaotao.fb;  
          public interface CarBrandType {  
              String HONG_QI = "紅旗";  
              String JI_LI = "吉利";  
          }  
          package com.baobaotao.fb; 
          public interface CarBrandType { 
              String HONG_QI = "紅旗"; 
              String JI_LI = "吉利"; 


          下面利用FieldRetrievingFactoryBean獲取CarBandType接口中定義的常量,并注入到某個bean的屬性中: 

          view plaincopy to clipboardprint?<bean id="car" class="com.baobaotao.fb.Car">  
              <property name="brand" ref="hongQi"/>  
          </bean>  
          <bean id="hongQi" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"  
              <property name="staticField" value="com.baobaotao.fb.CarBrandType.HONG_QI"/>  
          </bean>  
          <bean id="car" class="com.baobaotao.fb.Car"> 
              <property name="brand" ref="hongQi"/> 
          </bean> 
          <bean id="hongQi" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" 
              <property name="staticField" value="com.baobaotao.fb.CarBrandType.HONG_QI"/> 
          </bean> 



          Spring還允許用戶用常量的全限定名作為FieldRetrievingFactoryBean的id,其效果和通過配置staticField屬性是一樣的: 

          view plaincopy to clipboardprint?<bean id="car" class="com.baobaotao.fb.Car">  
              <property name="brand" ref="com.baobaotao.fb.CarBrandType.HONG_QI"/>  
          </bean>  
          <bean id="com.baobaotao.fb.CarBrandType.HONG_QI" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" />  
          <bean id="car" class="com.baobaotao.fb.Car"> 
              <property name="brand" ref="com.baobaotao.fb.CarBrandType.HONG_QI"/> 
          </bean> 
          <bean id="com.baobaotao.fb.CarBrandType.HONG_QI" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" /> 



          當然,也可以直接將FieldRetrievingFactoryBean以內置bean的方式對brand屬性進行賦值,這樣在配置上更緊湊一些: 

          view plaincopy to clipboardprint?<bean id="car" class="com.baobaotao.fb.Car">  
              <property name="brand">  
                  <bean id="com.baobaotao.fb.CarBrandType.HONG_QI" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">  
                  </bean>  
              </property>  
          </bean>  
          <bean id="car" class="com.baobaotao.fb.Car"> 
              <property name="brand"> 
                  <bean id="com.baobaotao.fb.CarBrandType.HONG_QI" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> 
                  </bean> 
              </property> 
          </bean> 




          2、Method返回值的注入 
          Method返回值的注入需要使用MethodInvokingFactoryBean來完成。 

          在xml配置中,需要設定targetObject和targetMethod來指定目標bean和方法。如果使用靜態方法,則需要指定targetClass和targetMethod 

          配置文件如下: 

          view plaincopy to clipboardprint?<bean id="bdog" class="com.baobaotao.fb.Dog">  
            <property name="age">  
              <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">  
                <property name="targetObject">  
                  <ref local="randomAge"/>  
                </property>  
                <property name="targetMethod">  
                  <value>getAge</value>  
                </property>  
              </bean>  
            </property>  
          </bean>  
          <bean id="randomAge" class="com.baobaotao.fd.RandomAge" />  
          <bean id="bdog" class="com.baobaotao.fb.Dog"> 
            <property name="age"> 
              <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
                <property name="targetObject"> 
                  <ref local="randomAge"/> 
                </property> 
                <property name="targetMethod"> 
                  <value>getAge</value> 
                </property> 
              </bean> 
            </property> 
          </bean> 
          <bean id="randomAge" class="com.baobaotao.fd.RandomAge" /> 


          對于靜態方法: 

          view plaincopy to clipboardprint?<bean id="bdog" class="com.baobaotao.fb.Dog">  
            <property name="age">  
              <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">  
                <property name="targetClass">  
                  <value>com.baobaotao.fb.RandomAge</value>  
                </property>  
                <property name="targetMethod">  
                  <!-- getAge必須是靜態方法 -->  
                  <value>getAges</value>  
                </property>  
              </bean>  
            </property>  
          </bean>  

          posted on 2011-11-15 14:04 Steven_bot 閱讀(600) 評論(0)  編輯  收藏 所屬分類: spring

          主站蜘蛛池模板: 兖州市| 五常市| 阜宁县| 和静县| 哈巴河县| 炉霍县| 潜山县| 洛隆县| 榆树市| 沾化县| 观塘区| 溧水县| 肥西县| 故城县| 宁远县| 大关县| 靖西县| 定结县| 岳阳县| 日照市| 辽源市| 大连市| 玉门市| 岑巩县| 许昌市| 赞皇县| 沙湾县| 宝丰县| 乳源| 龙岩市| 新源县| 宁安市| 蒲江县| 阳高县| 松江区| 瑞金市| 东阿县| 邵阳市| 开阳县| 达尔| 康马县|