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