如何获取bean的属性以便在spring xml配置文件中读取?

问题描述:

我想要做的事就像春天如下:如何获取bean的属性以便在spring xml配置文件中读取?

<beans> 
    ... 
    <bean id="bean1" ... /> 
    <bean id="bean2"> 
     <property name="propName" value="bean1.foo" /> 
... 

我会认为这将访问bean1的的getFoo()方法和调用bean2的setPropName()方法,但是这似乎并没有上班。

我的理解:

  1. 你有一颗豆(bean1)与 财产被称为 “富”
  2. 你有另一个bean( bean2)与名为“propName”的 属性,其中 必须具有与 bean1中相同的“foo”。

为什么不这样做:

<beans> 
... 
<bean id="foo" class="foopackage.foo"/> 
<bean id="bean1" class="foopackage.bean1"> 
    <property name="foo" ref="foo"/> 
</bean> 
<bean id="bean2" class="foopackage.bean2"> 
    <property name="propName" ref="foo"/> 
</bean> 
.... 
</beans> 

这样做,你的bean2不连接在你的例子bean1等。您可以更改bean1和bean2而不会相互影响。

如果你真的需要做你所提出的注入,可以使用:

<util:property-path id="propName" path="bean1.foo"/> 

我想你必须注入bean1,然后由于计时问题手动获取foo。框架何时解析目标bean的值?

你可以创建一个指针bean并配置它。

class SpringRef { 
    private String targetProperty; 
    private Object targetBean; 

    //getters/setters 

    public Object getValue() { 
    //resolve the value of the targetProperty on targetBean. 
    } 
} 

Common-BeanUtils应该是有帮助的。

您需要使用PropertyPathFactoryBean

 
    <bean id="bean2" depends-on="bean1"> 
     <property name="propName"> 
      <bean class="org.springframework.beans.factory.config.PropertyPathFactoryBean"> 
       <property name="targetBeanName" value="bean1"/> 
       <property name="propertyPath" value="foo"/> 
      </bean> 
     </property> 
    </bean> 
+0

替代的语法使用“id”属性设置目标bean的名字和属性路径。 flicken 2008-09-27 04:33:12