Java Spring:从另一个bean访问bean属性

Java Spring:从另一个bean访问bean属性,java,spring,Java,Spring,我有两颗豆子: 配置管理器: public class ConfigurationManager { private Configuration configuration; public void init() { ... } // Loads a configuration // Getters and setters } 数据中心: public class DataCenter { private Configuration configuratio

我有两颗豆子:

配置管理器:

public class ConfigurationManager
{
    private Configuration configuration;

    public void init() { ... } // Loads a configuration

    // Getters and setters
}
数据中心:

public class DataCenter
{
    private Configuration configuration;

    ...

    // Getters and setters
}
我想从我的数据中心bean中获取ConfigurationManager的
configuration
字段,但我不太确定语法是什么

这是我的上下文文件:

<bean id="configurationManager"
      class="com.foo.ConfigurationManager"
      init-method="init">
    <property name="configurationFile" value="etc/configuration.xml"/>
</bean>

<bean id="dataCenter"
      class="com.foo.DataCenter">
    <!-- <property name="storages" ref="configurationManager."/> -->
</bean>

有人能告诉我怎么做吗?提前谢谢

试试这个

<bean id="dataCenter" class="com.foo.DataCenter">
    <property name="configuration" value="#{configurationManager.configuration}"/>
</bean>

您可以使用来按名称引用其他bean属性。以下是文档中给出的示例

<bean id="numberGuess" class="org.spring.samples.NumberGuess">
    <property name="randomNumber" value="#{ T(java.lang.Math).random() * 100.0 }"/>

    <!-- other properties -->
</bean>


<bean id="shapeGuess" class="org.spring.samples.ShapeGuess">
    <property name="initialShapeSeed" value="#{ numberGuess.randomNumber }"/>

    <!-- other properties -->
</bean>

在你的情况下,你可以使用

<bean id="configurationManager"
      class="com.foo.ConfigurationManager"
      init-method="init">
    <property name="configurationFile" value="etc/configuration.xml"/>
</bean>

<bean id="dataCenter"
      class="com.foo.DataCenter">
    <property name="storages" value="#{configurationManager.configuration}"/> 
</bean>


同样,您可以使用或

可能有用的:@ChrisHayes,这确实有效,谢谢!但我想知道,是否有一种更整洁的方法来减少锅炉板的配置,或者这是唯一/正确的方法…?谢谢你的评论。恐怕这个例子不适用于自定义对象。实际上我是先试过的。例如,如果我的字段是
String
,它会工作,但它是一个名为
Configuration
的类。我该怎么做呢?(或者可能我做错了)…@carlspring它也适用于自定义类,假设您有合适的访问器。如果愿意,还可以使用构造函数参数并指定参数的类型。@carlspring老实说,我实际上会有一个
配置
bean,它可能会在构造函数中加载自身并传递对该bean的引用,而不是按照您的要求这样做。@Sotiros,是否有一种方法可以定义一个实际上是已经定义的bean的字段/属性的bean?我的意思是——如果我有
beanA
,并且想定义一个新bean(
beanB
),它是
beanA.foo
?@carlspring的参考,如果我正确理解你的建议,那将违背IoC和依赖注入的目的。与创建
beanC
并将其注入
beanA.f
不同,您建议创建
beanA
来创建
beanA.f
,然后从
f
生成bean。无论如何,不,你不能用Spring来做这个。谢谢!你的两个答案都是正确的。我选择索蒂罗斯的答案,因为它更详细一些。