Spring の高度なアセンブリ -- 複数の実装クラスを備えた 1 つのインターフェイス

  • 自動配線のあいまいさ
  • オートワイヤリングは、1 つの Bean のみが目的の結果と一致する場合にのみ機能します。
  • このあいまいさにより、複数の Bean が結果と一致する可能性がある場合、Spring がプロパティ、コンストラクター パラメーター、またはメソッド パラメーターを自動配線できなくなります。
  • Spring には選択ができません。現時点では、Spring には失敗して例外をスローする以外に選択肢はありません。
  • つまり、インターフェイスに複数の実装クラスがアセンブルされている場合、エラー「NoUniqueBeanDefinitionException: タイプの適格な Bean がありません」が報告されます。
  • 解決策 --- 実装クラス @Primary の優先順位を指定します。
  • 実装クラスの優先度を指定し、インジェクション時に優先度の高い実装クラスを使用する
  • @Primary を使用して、実装クラスで優先 Bean を識別します。

  • 解決策 --- @Autowired と @Qualifier によるインジェクション

  • 解決策 --- @Resource インジェクションを使用して、デフォルトのクラス名に従って区別します。

  • 解決策 --- @Resource インジェクションを使用して、@Service で指定された名前に従って区別します。

おすすめ

転載: blog.csdn.net/weixin_59624686/article/details/131126207