2016-04-23 4 views
0

プロジェクトBaseによって豆選び春:</p> <pre><code>@Service public class BeanDefault implements BeanBase { } public class App { @Autowired private BeanBase beanBase; } </code></pre> <p>プロジェクト<code>MyDerived</code>(<code>Base</code>はMavenの中01​​の親であり、多くの他の派生プロジェクトがある):デフォルト

@Service 
public class MyBean implements BeanBase { 

} 

を私がしたいですAppMyBeanを使用して他のプロジェクトを妨害することなく使用します(彼らはまだBeanDefaultを使用します)。

私は(他の派生プロジェクトのコードを変更することができませんでした)の両方のプロジェクトBaseMyDerivedにコードを変更することができますので、それを行う方法:それが唯一の予選豆のとき

  • アプリケーションはBeanDefaultを使用します私のプロジェクト

MyBeanを使用BeanBase

  • Appの私がいることを見つけます作品:

    @Service 
    @Primary 
    public class MyBean implements BeanBase { 
    
    } 
    

    しかし、私はそれが良い練習ですか?

  • +0

    あなたは '@ Primary'を使用する方法は良いですが、今では常にMyBeanのインスタンスを取得することがわかります。別のインスタンスを選択的に取得するには、ここに説明されているようにBeanに名前を付けて '@ Qualifier'アノテーションを使用できます - http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans- autowired-annotation-qualifiers –

    +0

    @BijuKunjummen「あなたはいつもMyBeanのインスタンスを取得していることがわかります。私の派生プロジェクトでのみ発生します...他の派生プロジェクトはまだBeanDefaultを使用しています... – Sayakiss

    +0

    Ah私はあなたが正しいと思う、あなたの現在のアプローチはあなたのために働くでしょう。 –

    答えて

    1

    @Primaryが1つ以上のBeanに注釈されている限り、@Primaryを使用すると問題ありません。 @Qualifierも使用できます。

    @Service("mySpecialBean") 
    public class MyBean implements BeanBase { 
    
    } 
    
    public class App { 
        @Autowired 
        @Qualifier("mySpecialBean") 
        private BeanBase beanBase; 
    } 
    
    関連する問題

     関連する問題