Springsの最新バージョンでは、注釈を@Autowired
として使用してBeanを自動配線できます。これは、そのタイプ(または適用される場合はコンストラクター)を使用してBeanを自動配線します。 SpringのXMLファイルでautowire = "byName"として注釈なしで行っていたBean名に基づいて@Autowired
注釈を使用する方法はありますか?
JSR-250を使用できます@Resource
コンストラクターインジェクションまたはマルチパラメーターメソッドインジェクションが必要な場合を除き、名前によるBean自動配線の場合。
ドキュメントから:
アノテーション駆動型インジェクションを名前で表現する場合は、@ Qualifier値を使用してBean名を技術的に参照できる場合でも、主に@Autowiredを使用しないでください。代わりに、JSR-250 @Resourceアノテーションを使用します。これは、一意の名前で特定のターゲットコンポーネントを識別するためにセマンティックに定義されており、宣言されたタイプはマッチングプロセスとは無関係です。
次を使用できます。
@Autowired
@Qualifier("beanname")
この注釈は、自動配線時に候補Beanの修飾子としてフィールドまたはパラメーターで使用できます。
名前による自動配線を台無しにしていたBeanネームプロキシを使用していました。 @Resourceはタイプを気にしないので、その問題はありませんでした。だから今、私はSpring開発者によるこの勧告の1つの理由を知っています:-)
DIコンテナに登録されるBeanの名前を定義する場合、アノテーション自体に名前を渡すことができます。 @ Service(“ employeeManager”)。
次に、以下のコードを使用して、名前による自動配線を有効にできます
@Autowired
@Qualifier("employeeManager")
private EmployeeManagerService employeeManagerService;
BeanのJavaクラス定義で@Component( "beanname")を使用します
次に、自動配線でJSR 330を使用します
@Inject @Named(Value = "beanname")