5

重複の可能性:
とにかく、コンストラクター引数を必要とする Bean を @Autowire するには?

私のコントローラーでは、 @Autowired を使用して、メソッド/コンストラクターのオートワイヤーを使用してクラスを注入したいと考えています。たとえば、次を使用します。

@Autowired 
private InjectedClass injectedClass; 

私の問題は、注入されたクラスのinjectedClassにはコンストラクターがあり、コントローラーからコンストラクターに変数を渡す必要があることです。コンストラクターに値を渡すにはどうすればよいですか?

4

2 に答える 2

5

アノテーションを使用している場合は、@Autowired アノテーションを MyClass のコンストラクターに適用できます。これにより、MyClass の特別なコンストラクターに渡す Bean が自動ワイヤリングされます。次の例を検討してください

public class MovieRecommender {

  @Autowired
  private MovieCatalog movieCatalog;

  private CustomerPreferenceDao customerPreferenceDao;

  @Autowired
  public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {
      this.customerPreferenceDao = customerPreferenceDao;
  }

  // ...
}
于 2012-04-25T11:22:35.747 に答える
3

@Resource(name = "x")プライベート データ メンバーをアノテーションでマークするか、アプリケーション コンテキスト XML でコンストラクター インジェクションを使用してワイヤリングすることができます。

Spring ではアノテーションと XML 構成を混在させることができます。オール オア ナッシングである必要はありません。

<bean id="myClass" class="foo.bar.MyClass">
    <constructor-arg ref="yourArgRefHere"/> 
</bean>
于 2012-04-25T10:56:46.103 に答える