1

Spring構成に2つのBeanとがbeanAあります。beanBこれらのBeanは両方とも同じインターフェースを実装します。インターフェイスタイプのautowiredフィールドを持つクラスがあります(つまり、beanAまたはのインスタンスが入力されますbeanB)。

最初はBeanが1つしかなかったので、@Autowiredアノテーションを使用するだけでフィールドにデータが入力されました。ただし、現在、自動配線できる2つの潜在的なBeanがあります。リソースの1つにプロパティが存在することに基づいて、Beanを自動配線したいと思います.properties。これを行うためのエレガントな方法はありますか?

私が現在使用している解決策は@Qualifier、autowiredフィールドのアノテーションを使用して指定beanAし、プロパティがコードに存在するかどうかを確認することです。含まれている場合は、フィールドをのインスタンスに再割り当てしますbeanB。それは非常に不格好な方法なので、私はより良いオプションを探しています。

4

3 に答える 3

2

Beanプロファイルの新しい機能とは別に、アクセス時にBeanをインスタンス化する機能を利用することもできます。アイデアは、Beanタイプ(または)FactoryBeanを注入することです。次に、ファクトリBeanはBeanファクトリを返し、必要になる可能性のある正しいタイプのBeanをインスタンス化します。thenの構成では、リソースバンドルからのプロパティを利用できます。FactoryBeanfqcn.BeanAfqcn.BeanBFactoryBean

于 2012-06-13T18:11:53.707 に答える
1

Beanプロファイルは、これに最適である可能性があります。「アクティブな」プロファイルに基づいて、いずれかのBeanを作成できます。

やや古い記事ですが、Spring3.1のプロファイルへの良いリファレンスです-http ://blog.springsource.com/2011/02/11/spring-framework-3-1-m1-released/

于 2012-06-13T18:03:59.967 に答える
0

春のプロフィールが役立ちます

構成の変更

web.xml

<context-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>a</param-value>
    </context-param>

プロファイル付きのspring-beans.xml。プロファイル値は、意思決定のためのプロパティ値として動作できます。

<bean id="A" profile="a"/>
<bean id="B" profile="b"/>
于 2012-06-13T18:12:29.693 に答える