2016-10-25 5 views
1

同じインターフェースを実装する2つの@Component Beanがあります。プロフィールの注釈を持っていますが、他のものはありません。私は-Dspring.profiles.active=mockでアプリケーションを実行する場合春のプロファイルのあいまいさ

@Component 
@Profile("mock") 
public class CompMock implements Comp {...} 

@Component 
public class CompReal implements Comp {...} 

、なぜ二Beanが代わりに明示的プロファイル(「モック」)でアノテートされた最初のものの中に配線されていますか?

答えて

3

@Profile("mock")は、プロファイルが「模擬」である場合を意味します。それで全部です。 @Profileは嗜好を示していません。

@Profile("!mock")CompRealに追加するなど、いくつかの方法で問題を解決できます。

+0

CompMockレベルにプライマリ注釈を追加することで修正しました。ありがとう@zeroflagL – TheRock3t

+0

@Profile(!mock)は問題を解決しますが、本当に醜いです:)それを修正するより美しい方法を持つことは素晴らしいでしょう – XZen

関連する問題