2017-05-08 11 views
0

プロジェクトAを実行しようとするとプロジェクトBとプロジェクトBがプロジェクトAのjarファイルとして追加されているとします。これは、 ""という名前のBean名 "xyz"同じ名前とクラスの非互換Bean定義 "mavenプロジェクトで同じ名前の2つのBeanの競合を解決するにはどうすればよいですか?

誰もがこれをプロジェクトBのBean" xyz "を無視し、プロジェクトAの" xyz "Beanのみを実行するか、注釈などがあるそれ?

+0

このような状況は、コード臭のようなものです。おそらく、リファクタリングを検討する必要がありますか? –

+0

プロジェクトBのbean "xyz"に@Lazyを使用する方法がありますか? –

+0

@NielsBechNielsen実際に私はプロジェクトAとBの両方に同じJersey設定ファイル、つまりデフォルトの作成クラスが含まれるように、jersey archetypeのmavenプロジェクトを作成しました。それが理由です。今、私は働くことができる何かを提案することができますか? – Manish

答えて

-1

EGクラスファイルに修飾子アノテーションを使用します。 例 -

@Autowired @Qualifier("ProjectA") 
+0

u平均 @Autowired @Qualifier( "xyz")???その豆やクラスが矛盾しているからです。 また、私はxmlファイルを持っていません.pom xml..i Javaでアノテーションを使用しています – Manish

+0

申し訳ありませんが、私の悪い点は、クラスファイルに注釈を入力する必要があります。typo –

+0

大丈夫です。 クラスには何が必要ですか? @Qualifier(xyz.class)???? – Manish

0

これを実現するには、修飾子アノテーションを使用できます。

@Qualifier("ProjectA") 

or 

@Qualifier("complete.package.ProjectA") 
+0

私は与えたansとursの間の違いは何か知っているかもしれません –

-1

あなたはenter link description here

編集ポンポンファイルをBからクラスファイルを除外するために使用したシェードプラグインを梱包しながら、クラスファイルを除外するためにBのためのPOMファイルを編集することができ、enter link description here

0

@Primaryアノテーションを使用コンフィグレーションクラスのbean defenitionについて

@Bean(name = "beanOnA") 
@Primary 
public YourInterface yourBeanOnProjectA(){ 
    return new YourClass("Bean on Project A"); 
} 

BeanをautowiringするときにBe修飾子注釈を使用する名前。

@Autowired 
@Qualifier("beanOnA") 
YourInterface yourInterface; 
関連する問題