Spring中怎么获取其他Bean的属性值

2024-03-14,

Spring中怎么获取其他Bean的属性值,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

一 配置

<?xml version="1.0" encoding="GBK"?><beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns="http://www.springframework.org/schema/beans"   xmlns:util="http://www.springframework.org/schema/util"   xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-4.0.xsd   http://www.springframework.org/schema/util   http://www.springframework.org/schema/util/spring-util-4.0.xsd">   <!--下面配置定义一个将要被引用的目标bean-->   <bean id="person" class="org.crazyit.app.service.Person">      <property name="age" value="30"/>      <property name="son">        <!-- 使用嵌套Bean定义setSon()方法的参数值 -->        <bean class="org.crazyit.app.service.Son">           <property name="age" value="11" />        </bean>      </property>   </bean>   <!-- 将指定Bean实例的getter方法返回值定义成son1 Bean -->   <bean id="son1" class=      "org.springframework.beans.factory.config.PropertyPathFactoryBean">      <!-- 确定目标Bean,指定son1 Bean来自哪个Bean的getter方法 -->      <property name="targetBeanName" value="person"/>      <!-- 指定son1 Bean来自目标bean的哪个getter方法,son代表getSon() -->      <property name="propertyPath" value="son"/>   </bean>   <!-- 简化配置   <util:property-path id="son1" path="person.son"/> -->   <!-- 下面定义son2 Bean -->   <bean id="son2" class="org.crazyit.app.service.Son">      <property name="age">        <!-- 使用嵌套Bean为调用setAge()方法指定参数值 -->        <!-- 以下是访问指定Bean的getter方法的简单方式,        person.son.age代表获取person.getSon().getAge()-->        <bean id="person.son.age" class=           "org.springframework.beans.factory.config.PropertyPathFactoryBean"/>      </property>   </bean>   <!-- 简化配置   <bean id="son2" class="org.crazyit.app.service.Son">      <property name="age">        <util:property-path path="person.son.age"/>      </property>   </bean> -->   <!-- 将基本数据类型的属性值定义成Bean实例 -->   <bean id="theAge" class=      "org.springframework.beans.factory.config.PropertyPathFactoryBean">      <!-- 确定目标Bean,表明theAge Bean来自哪个Bean的getter方法的返回值 -->      <property name="targetBeanName" value="person"/>      <!-- 使用复合属性来指定getter方法。son.age代表getSon().getAge() -->      <property name="propertyPath" value="son.age"/>   </bean>   <!-- 简化配置   <util:property-path id="theAge" path="person.son.age"/> -->   <!-- 将基本数据类型的属性值定义成Bean实例 -->   <bean id="theAge2" class=      "org.springframework.beans.factory.config.PropertyPathFactoryBean">      <!-- 确定目标Bean,表明theAge2 Bean来自哪个Bean的属性。        此处采用嵌套Bean定义目标Bean -->      <property name="targetObject">        <!-- 目标Bean不是容器中已经存在的Bean, 而是如下的嵌套Bean-->        <bean class="org.crazyit.app.service.Person">           <property name="age" value="30"/>        </bean>      </property>      <!-- 指定theAge2 Bean来自目标bean的哪个getter方法,age代表getAge() -->      <property name="propertyPath" value="age"/>   </bean></beans>

二 Bean

1 Person

package org.crazyit.app.service;public class Person{   private int age;   private Son son;   // age的setter和getter方法   public void setAge(int age)   {      this.age = age;   }   public int getAge()   {      return this.age;   }   // son的setter和getter方法   public void setSon(Son son)   {      this.son = son;   }   public Son getSon()   {      return this.son;   }}

2 Son

package org.crazyit.app.service;public class Son{   private int age;   // age的setter和getter方法   public void setAge(int age)   {      this.age = age;   }   public int getAge()   {      return this.age;   }   public String toString()   {      return "Son[age=" + age + "]";   }}

三 测试类

package lee;import org.springframework.context.*;import org.springframework.context.support.*;import org.crazyit.app.service.*;public class SpringTest{  public static void main(String[] args)  {    ApplicationContext ctx = new      ClassPathXmlApplicationContext("beans.xml");    System.out.println("系统获取的son1:"      + ctx.getBean("son1"));    System.out.println("系统获取son2:"      + ctx.getBean("son2"));    System.out.println("系统获取theAge的值:"      + ctx.getBean("theAge"));    System.out.println("系统获取theAge2的值:"      + ctx.getBean("theAge2"));  }}

四 测试结果

系统获取的son1:Son[age=11]系统获取son2:Son[age=11]系统获取theAge的值:11系统获取theAge2的值:30

关于Spring中怎么获取其他Bean的属性值问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注本站行业资讯频道了解更多相关知识。

《Spring中怎么获取其他Bean的属性值.doc》

下载本文的Word格式文档,以方便收藏与打印。