アノテーションで指定されたビーン名が既存の非互換なビーンdefと衝突している。
質問
いくつかのSpringビーン定義で問題が発生しています。私のmain()メソッドによって読み込まれるいくつかのコンテキストxmlファイルがあり、それらの両方がほとんどタグだけを含んでいます。私のメインメソッドが起動すると、Springからこのエラーが表示されます。
Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'converterDAO' for bean class [my.package.InMemoryConverterDaoImpl] conflicts with existing, non-compatible bean definition of same name and class [my.other.package.StaticConverterDAOImpl]
DAOクラスはどちらもこのようにアノテーションされています。
@Repository("converterDAO")
public class StaticConverterDAOImpl implements ConverterDAO {
...
}
インメモリDaoは@Repository("converterDAO")アノテーションも持っています。このように他のクラスでダオが参照されます。
...
private @Autowired @Qualifier("converterDAO") ConverterDAO converterDAO;
...
私は、1つのDAOが他のDAOの定義を上書きすることを望んでいます。これは、私がいつも理解しているように、最初の段階でDIフレームワークを使用する主な理由の1つです。私は何年も前からxmlの定義でこれをやっていますが、何の問題もありませんでした。しかし、コンポーネントスキャンやアノテーションされたビーン定義ではそうではないのですか?また、Springが「互換性がない」と言うのはどういう意味でしょうか?これらは同じインターフェースを実装しており、そのインターフェース型のフィールドに自動配線されています。なぜ互換性がないのでしょうか?
誰か、アノテーションされ、コンポーネントスキャンされたビーンが別のものをオーバーライドする方法を教えてくれませんか?
-マイク
どのように解決するのですか?
XMLファイルでは、一連の宣言が存在し、前の定義を新しい定義で上書きすることができます。アノテーションを使用する場合、アノテーションの概念はありません。 の前に または の後に . すべてのビーンが同じレベルにあります。同じ名前のビーンを2つ定義しているので、Springはどちらを選ぶべきかわからないのです。
異なる名前をつけて ( staticConverterDAO , inMemoryConverterDAO など)、Spring XMLファイル内にエイリアスを作成し( theConverterDAO など)を作成し、コンバータをインジェクションする際にこのエイリアスを使用します。
@Autowired @Qualifier("theConverterDAO")
関連
-
[解決済み] Springの@Autowiredの使い方を理解する
-
[解決済み】Spring @Autowired の使い方
-
[解決済み] 同じインタフェースを実装する2つのビーンを自動配線する - 自動配線するデフォルトのビーンを設定する方法は?
-
[解決済み] Spring Data JPAでネイティブクエリ結果をNon-Entity POJOにマップする。
-
[解決済み] Spring @PostConstruct と init-method 属性の比較
-
[解決済み] Spring AOP: JoinPointとPointCutの違いは何ですか?
-
[解決済み] RestTemplateを使ったヘッダ付きHTTP get
-
[解決済み] 要求されたBeanは現在作成中です。解決不能な循環参照はありますか?
-
[解決済み] Springのアノテーション@Controllerは@Serviceと同じですか?
-
[解決済み] Spring は Bean xml 設定ファイルが存在するにもかかわらず見つけることができない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Springのセキュリティ認証の例外を@ExceptionHandlerで処理する
-
[解決済み] Spring Boot - 実行中のポートを取得する方法
-
[解決済み] Spring CrudRepositoryで大文字小文字を区別しないクエリ
-
[解決済み] Spring BootとMongoDBへの接続設定方法
-
[解決済み] Spring: 静的フィールドに値を注入するには?
-
[解決済み] kotlinで@Autowiredのようなspringアノテーションを使用する方法とは?
-
[解決済み] SpringアプリケーションのコンテキストをJunitのテストクラスで再利用する
-
[解決済み] Spring-BootプロジェクトでCSSなどの静的ファイルをどこに置くか?
-
[解決済み] Spring は Bean xml 設定ファイルが存在するにもかかわらず見つけることができない
-
リクエストコンテキストに依存するメソッドの単体テスト