2016-06-15 15 views
0

私は2つのサービスを持つWebアプリケーション(webapp1)を持っています。各サービスはインターフェースから継承しています。各サービスには、idを持つ@SERVICEの注釈があります。 (service1とservice2)。 は、例えばwervice1のために、私が持っている:Spring Mvc、アノテーションによるbean定義のオーバーライド方法

@SERVICE("service1") 

各サービスは@AUTOWIRED@QUALIFIER注釈を使用して、コントローラに注入されます。 今、webapp1にオーバーレイで作成された2番目のWebアプリケーション(webapp2)があります。 webapp2では、私はservice1をオーバーライドしたいです。私はこれをやろう:私は同じid(サービス1とwerviceオーバーライドサービス1)を持つ2つの豆を持っているので、私はエラーを持っている

@PRIMARY 
@SERVICE("service1") 

エラーメッセージがある:org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'service1' for bean class [fr.yyy.oav.xxx.service.YyyService1] conflicts with existing, non-compatible bean definition of same name and class [fr.harvest.oav.xxx.service.XxxService1]

I春クラスにそれを使用するために禁止することに代えて、IDの名前を使用することを可能にするアノテーション@Beanを使用しようとしました。

xml定義を使用せずにservice1をオーバーライドする方法はありますか?

おかげ

+1

完全なエラーメッセージを表示できますか? –

+0

タイプ別にBeanを自動配線(解決)しようとしました。したがって、IDは必要ありません。 – naXa

答えて

0

が、これはサービス1とサービス2(両方とも同じWebアプリケーションでは)彼らので、同じインターフェイスを実装しているため、私はそれを使用することはできません

0

に動作します、あなたの指定されたbeanタグ.Hopeでautowire="bytype"を使用してみてください両方のタイプのインタフェースを使用して注入されます。それは私がそれらを区別するために修飾子にIDを使用する理由です。

関連する問題