53

Springs の最新バージョンでは、アノテーション as を使用して Bean を自動配線できます@Autowired。これにより、そのタイプ(または適用されている場合はコンストラクター)を使用して Bean が自動配線されます。Spring の XML ファイルでautowire="byName"@Autowiredとしてアノテーションなしで行っていた Bean 名に基づくアノテーションを使用する方法はありますか?

4

5 に答える 5

105

以下を使用できます。

@Autowired
@Qualifier("beanname")

@Qualifier javadocによると

このアノテーションは、オートワイヤー時にフィールドまたはパラメーターで候補 Bean の修飾子として使用できます。

于 2012-08-06T15:33:10.050 に答える
50

@Resourceコンストラクター注入またはマルチパラメーター メソッド注入が必要でない限り、名前による Bean オートワイヤーにJSR-250 を使用できます。

ドキュメントから:

アノテーション駆動型インジェクションを名前で表現する場合は、技術的に @Qualifier 値を介して Bean 名を参照できる場合でも、主に @Autowired を使用しないでください。代わりに、JSR-250 @Resource アノテーションを使用してください。これは、特定のターゲット コンポーネントを一意の名前で識別するように意味的に定義されており、宣言された型は照合プロセスには関係ありません。

于 2012-08-06T15:35:44.587 に答える
3

DI コンテナーに登録される Bean の名前を定義する場合は、 @Service ("employeeManager")などのアノテーション自体に名前を渡すことができます。

次に、以下のコードを使用して、名前で自動配線を有効にできます

@Autowired
@Qualifier("employeeManager")
private EmployeeManagerService employeeManagerService;
于 2016-07-07T07:00:15.453 に答える
2

名前で自動配線を台無しにしていたBean名プロキシを使用していました。@Resourceはタイプを気にしないため、この問題は発生しませんでした。だから今、私は春の開発者によるこの推奨の1つの理由を知っています:-)ちょうど参考までに

于 2013-03-18T14:44:22.233 に答える
2

Bean の Java クラス定義で @Component("beanname") を使用します

次に、自動配線中にJSR 330を使用します

@Inject @Named(Value="beanname")

于 2017-10-16T08:29:45.123 に答える