2016-10-19 13 views
1

@Configurationクラスを通して同じタイプの任意の数の@Beanオブジェクトを返すにはどうすればよいですか?次のようなものがあります。同じインタフェースの複数のコンフィグレーション済みBeanを設定する

@Configuration 
public class MyClass { 
    @Bean 
    public MyBean myBean { 
    for (String myBeanName: getMyBeanNames()) { 
    MyBean myBean = new MyBean(); 
    myBean.setName(myBeanName); 
    return myBean 
    } 
} 

明らかにスニペットはコンパイルされませんが、どのように結果を得られますか?

+0

[1つのSpring Bean /インターフェースのいくつかの実装の取り扱い]の可能複製(http://stackoverflow.com/questions/11777079/handling-several-implementations-of -one-spring-bean-interface) –

+0

できません。myBeanメソッドはクラスの単一のインスタンスを返す必要があります。コード内のコンフィグレーションはxmlを置き換えるだけで、名前または型を指定すると、多くの異なる豆が必要な場合は、それぞれの@Beanで注釈付けされた多くのメソッドが必要です。 – OscarG

+0

@Isaam重複ではありません。これは任意の数のBeanです。修飾子を使用すると、定義済みのセットに対してのみ動作します。 – newToScala

答えて

0

が、私はこれをやってしまった:

@PostConstruct 
public void postConstruct() { 
    ConfigurableListableBeanFactory beanFactory = ((ConfigurableApplicationContext) applicationContext).getBeanFactory();  
    for (String myBeanName: getMyBeanNames()) { 
     MyBean myBean = new MyBean(); 
     myBean.setName(myBeanName); 
     beanFactory.registerSingleton(myBean.class.getName() + myBean.getName(), myBean) 
    } 
    } 
関連する問題