2016-05-10 6 views
11

1つのクラスから複数のBeanを作成したいと考えています。それぞれ、現在のアプリケーションコンテキストでインスタンス化されています。それぞれは、プロパティファイルの接頭辞付きのプロパティに基づいています。私は達成しようとしていることの例を挙げました。過度のコードなしでこれを行う方法についてのヒント(例えば、複数のクラスや複雑な工場などがない場合)は参考になります。Springで現在のBeanのプロパティを参照するEL

XML構成:

<bean id="bean1" class="Mybean"> 
    <property name="prefix" value="bean1"/> 
</bean> 

<bean id="bean2" class="Mybean"> 
    <property name="prefix" value="bean2"/> 
</bean> 

<bean id="bean3" class="Mybean"> 
    <property name="prefix" value="bean3"/> 
</bean> 

プロパティファイル:

bean1.name=alfred 
bean2.name=bobby 
bean3.name=charlie 

クラス:

class Mybean { 
    @Value("${#{prefix}.name}") 
    String name; 
} 

メインクラス:

public class Main { 
    @Autowired 
    List<MyBean> mybeans; 
} 

答えて

2

ます(代わりに接頭辞を格納する)直接Beanの名前を設定するためにPropertyPlaceholderConfigurerを使用することができます。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="app.properties"/> 
</bean> 

<bean id="bean1" class="Mybean"> 
    <property name="name" value="${bean1.name}"/> 
</bean> 

<bean id="bean2" class="Mybean"> 
    <property name="name" value="${bean2.name}"/> 
</bean> 

<bean id="bean3" class="Mybean"> 
    <property name="name" value="${bean3.name}"/> 
</bean> 
+0

あなたは私にあなたが@value注釈に春ELでの結果のプロパティを参照したい方法の例を与えることができますか? – ironchefpython

+0

私はあなたがそれを見つけると思う[ここ](https://stackoverflow.com/questions/2041558/how-does-spring-3-expression-language-interact-with-property-placeholders?rq=1) –

+0

SpringプロパティプレースホルダBean内のデータを参照します。構成中の* bean *で定義されたプロパティーを参照する方法については説明していません。 – ironchefpython

関連する問題