21

@Autowiredby コンストラクターは、Bean をタイプ別に検索します。autowired アノテーションを使用してコンストラクターに名前で Bean を注入する方法は? 同じタイプの 2 つの Bean がありますが、Bean 名に基づいて別の同じクラスのコンストラクターに注入する必要があります。どうすればいいのですか?

XML:

 <bean id="A" class="com.Check"/>
 <bean id="B" class="com.Check"/>

ジャワ:

Class C {

   private Check check;

   @Autowired
   public C(Check check){
       this.check = check
   }

  }

これを行うと、同じタイプの Bean が 2 つチェックされていることを示す例外が発生しますが、そのタイプの Bean は 1 つだけである必要があります。コンストラクター注入を介しid="B"てこのクラスに Bean を注入するにはどうすればよいですか?C

私のapplicationContext.xml中で私は言及しautowire="byType"ました。この特定のクラスでのみ自動配線byNameする必要があり、タイプのみで自動配線する必要があるすべての残り

4

1 に答える 1

31

コンストラクターパラメーターのターゲット Bean ID で @Qualifier アノテーションを使用する必要があります。

<bean id="A" class="com.Check"/>
<bean id="B" class="com.Check"/>

Class C {

   private Check check;

   @Autowired
   public C(@Qualifier("A") Check check){ //<-- here you should provide your target bean id
      this.check = check
   }
}
于 2013-11-10T08:45:16.847 に答える