Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何访问bean的属性以读取SpringXML配置文件?_Spring - Fatal编程技术网

如何访问bean的属性以读取SpringXML配置文件?

如何访问bean的属性以读取SpringXML配置文件?,spring,Spring,我想在春天做如下事情: <beans> ... <bean id="bean1" ... /> <bean id="bean2"> <property name="propName" value="bean1.foo" /> ... ... ... 我认为这将访问bean1的getFoo()方法并调用bean2的setPropName()方法,但这似乎不起作用。我认为您必须注入bean1,然后由于时间问

我想在春天做如下事情:

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

...
...

我认为这将访问bean1的getFoo()方法并调用bean2的setPropName()方法,但这似乎不起作用。

我认为您必须注入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. 
  }
}
应该会有帮助。

您需要使用:

我的理解是:

  • 你有一个豆子(bean1)和一个 名为“foo”的属性
  • 你有另一个豆子(bean2)和 名为“propName”的属性 必须有与中相同的“foo” bean1
  • 为什么不这样做:

    <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"/>
    
    
    
    另一种语法使用“id”属性设置目标bean名称和属性路径。
    <util:property-path id="propName" path="bean1.foo"/>