0

複数のプロパティファイルから複数のプロパティを持つクラスの複数のインスタンスを作成できますか?

<beans>
   <bean class="xyz">
       <property name="abc">${abc}</property>
     <property name="pqr">${pqr}</property>
   </bean>
<beans>

ここで、abcとpqrのさまざまな値に対して多数のBeanを作成したいと思います。

abcとpqrの1つの値に対する1つのxyzインスタンスabcとpqrの他の値に対する2番目のxyzインスタンス

PropertyPlaceholderConfigurerを使用してこれを行うことはできますか?はいの場合、どのように行いますか?

4

2 に答える 2

1

プロパティ ファイルには通常、重複するキーは含まれません。したがって、異なる'abc''pqr'キー値ごとに異なるファイルがあると仮定します。つまり、1 つのインスタンス/1 つのプロパティ ファイルが必要です。その場合は、すべてのプロパティ ファイルをロードして、次のように対応する Bean 定義を作成するだけです。

<bean id="ppc1"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location" value="classpath:/mya.properties" />
  <property name="placeholderPrefix" value="$a{" />
  <property name="placeholderSuffix" value="}" />
</bean>

<bean id="ppc2"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location" value="classpath:/myb.properties" />
  <property name="placeholderPrefix" value="$b{" />
  <property name="placeholderSuffix" value="}" />
</bean>

<bean id="objectA" class="MyObject">
  <property name="field1" value="$a{abc}" />
  <property name="field2" value="$a{pqr}" />
</bean>

<bean id="objectB" class="MyObject">
  <property name="field1" value="$b{abc}" />
  <property name="field2" value="$b{pqr}" />
</bean>

List<MyObject>必要に応じて、インスタンス変数を持つ「コンテナー」Bean を作成します。これにより、すべての MyObject インスタンスが保持されます。

<bean id="myContainerBean" class="MyContainer">
  <property name="objects">
    <list>
      <ref bean="objectA" />
      <ref bean="objectB" />
    </list>
  </property>
</bean>

「動的な」ソリューションを考える場合は、@ Biju の回答を参考にしてください。

于 2012-09-10T21:56:56.887 に答える
0

すぐに使えるものは何も考えられません - 私が考えることができる唯一の方法は、カスタムBeanFactoryPostProcessorを使用することです。BeanFactoryPostProcessors を使用すると、アプリケーション コンテキストが読み込まれるときに、より多くの Bean 定義を追加できるため、プロパティ ファイルに基づいてより多くの Bean 定義を登録するカスタム コードを記述でき、それらは実行時に Bean としてマニフェストされます。

于 2012-09-10T18:44:37.560 に答える