私はいくつかのSpring Beanを共有ライブラリジャーに入れています。私は@Qualifier
を働かせるように見えない。Beanが別のjarファイルにあるときにSpring @Qualifierが動作しない
"byType"に設定されています。これはSpring 3.1.0.M2を使用しており、スタンドアロンの実行可能ファイルとして実行しています。共有ライブラリから "TestTwoBean"を削除すると、プロジェクトは期待通りに実行されます。
にmyproj-共有lib.jar:
@Service
public class TestOneBean implements ITestBean {
}
@Service
public class TestTwoBean implements ITestBean {
}
がmyproj.jar:
@Service
public class TestConsumerBean {
@Autowired @Qualifier("testOneBean")
private ITestBean bean;
}
私は、実行時に例外"名前を持つユニークな豆" を取得しません:
org.springframework.beans.factory.UnsatisfiedDependencyException: ファイル ' - 'に 'testConsumerBean'という名前のBeanを作成する際にエラーが発生しました。 Beanプロパティ 'bean'によって満たされていない依存関係が表示されました:: No [com.myco。 ITestBean]が定義されています:予期される単一の が一致するBeanですが、見つかった2:[testOneBean、testTwoBean];ネスト 例外org.springframework.beans.factory.NoSuchBeanDefinitionExceptionある:[com.myco.TestBean]が定義されているタイプの無 ユニークビーン:期待単一 マッチングビーンなく2が見つかりました:[testOneBean、testTwoBean] org.springframeworkで.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1167) ...
@Qualifier
は、このような状況では動作しませんか?既知の回避策はありますか?
いくつか良い点があります。このアプリケーションの残りの部分はもともとゼロ設定アプローチ(型オートワイヤリング、注釈なし)を使用して作業しましたが、この新しい重複したBeanの問題は規約を破っていました。 2つのメソッドを混在させる簡単な方法はないように見えるので、厳密な配線(default-autowire = "no")を使用し、すべてのBeanに注釈を付けるようにコードベース全体をリファクタリングしました。これは例外を修正し、この種の将来の回帰を避けるべきです。ありがとう! – seanhodges