16

私は2つの豆を持っています:

構成マネージャー:

public class ConfigurationManager
{
    private Configuration configuration;

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

    // Getters and setters
}

データセンター:

public class DataCenter
{
    private Configuration configuration;

    ...

    // Getters and setters
}

DataCenter 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>

誰かがこれを行う方法を教えてもらえますか? 前もって感謝します!

4

2 に答える 2

18

Spring Expression Languageを使用して、他の 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>

同様に、@Valueアノテーションを@Beanメソッドで使用し たり、メソッドで使用したりできます。@Autowired

于 2013-10-05T05:31:47.223 に答える
5

これを試して

<bean id="dataCenter" class="com.foo.DataCenter">
    <property name="configuration" value="#{configurationManager.configuration}"/>
</bean>
于 2013-10-05T02:06:49.387 に答える