七、高級(jí)依賴關(guān)系配置

獲取其他Bean的屬性值:

PropertyPathFactoryBean用來(lái)獲取目標(biāo)Bean的屬相值(實(shí)際上就是它的getter方法的返回值),獲得的值可以注入給其他Bean,也可以直接定義成新的Bean。
使用PropertyPathFactoryBean來(lái)調(diào)用其他Bean的getter方法需要指定如下信息:

  • 調(diào)用哪個(gè)對(duì)象。有PropertyPathFactoryBean的setTargetPbject(Object targetObject)方法指定。
  • 調(diào)用哪個(gè)getter方法。由PropertyPathFactoryBean的setPropertyPath(String propertyPath)方法指定。

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd" >
    
      <!-- 定義一個(gè)將要被應(yīng)用的目標(biāo)Bean -->
      <bean id="persion" class="entity.Persion">
         <property name="age" value="30"/>
         <property name="son">
            <!-- 使用嵌套Bean定義setSon()方法的參數(shù)值 -->
            <bean class="entity.Son">
               <property name="age" value="11"/>
            </bean>
         </property>
      </bean>
      <!-- 將指定Bean實(shí)例的getter方法返回值定義成son1 Bean -->
      <bean id="son1" class="entity.Son1">
         <!--確定目標(biāo)Bean,指定son1 Bean來(lái)自哪個(gè)Bean的getter方法 -->
         <property name="targetBeanName" value="persion"/>
         <!-- 指定son1 Bean來(lái)自目標(biāo)Bean的那個(gè)getter方法,son代表getSon() -->
         <property name="propettyPath" value="son"/>
      </bean>
</beans>

SpringTest.java

public class SpringTest
{
    public static void main(String[] args)
    { 
         ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
         System.out.println("系統(tǒng)獲取son1:"ctx.getBean("son1"));
    }
}

輸出

系統(tǒng)獲取son1: Son[age=11]

獲取Field值:

獲取方法返回值:

Spring框架的本質(zhì)就是通過(guò)XML配置來(lái)執(zhí)行java代碼,因此幾乎可以把所有的Java代碼放到Spring配置文件中管理:

  • 調(diào)用構(gòu)造器創(chuàng)建對(duì)象(包括使用工廠方法創(chuàng)建對(duì)象),用<bean.../>元素。
  • 調(diào)用setter方法,用<property.../>元素。
  • 調(diào)用getter方法,PropertyPathFactoryBean或<util:property-path.../>元素。
  • 調(diào)用普通方法,用MethodInvokingFactoryBean工廠Bean。
  • 獲取Field的值,用FieldRetrievingFactoryBean或<util:constant.../>元素。

一般來(lái)說(shuō),應(yīng)該講如下兩類信息放到XML配置文件中管理:

  • 項(xiàng)目升級(jí)、維護(hù)時(shí)經(jīng)常需要改動(dòng)的信息。
  • 控制項(xiàng)目類各組件耦合關(guān)系的代碼。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,740評(píng)論 18 399
  • 上篇文章我們對(duì)Spring做了初步的學(xué)習(xí),了解了基本的依賴注入思想、學(xué)會(huì)簡(jiǎn)單的配置bean、能夠使用Spring容...
    Single_YAM閱讀 395評(píng)論 0 1
  • 指尖蝶舞的花園閱讀 208評(píng)論 0 1
  • 一早起來(lái)陪老媽去醫(yī)院,裝動(dòng)態(tài)血壓檢測(cè)機(jī),由于出門時(shí)檢查不仔細(xì),忘帶檢查單,跑步的功力派上用場(chǎng),奔襲往返,所幸未誤事...
    自在飛花12388閱讀 259評(píng)論 0 2

友情鏈接更多精彩內(nèi)容