私のコントローラーでは、 @Autowired を使用して、メソッド/コンストラクターのオートワイヤーを使用してクラスを注入したいと考えています。たとえば、次を使用します。
@Autowired
private InjectedClass injectedClass;
私の問題は、注入されたクラスのinjectedClassにはコンストラクターがあり、コントローラーからコンストラクターに変数を渡す必要があることです。コンストラクターに値を渡すにはどうすればよいですか?
私のコントローラーでは、 @Autowired を使用して、メソッド/コンストラクターのオートワイヤーを使用してクラスを注入したいと考えています。たとえば、次を使用します。
@Autowired
private InjectedClass injectedClass;
私の問題は、注入されたクラスのinjectedClassにはコンストラクターがあり、コントローラーからコンストラクターに変数を渡す必要があることです。コンストラクターに値を渡すにはどうすればよいですか?
アノテーションを使用している場合は、@Autowired アノテーションを MyClass のコンストラクターに適用できます。これにより、MyClass の特別なコンストラクターに渡す Bean が自動ワイヤリングされます。次の例を検討してください
public class MovieRecommender {
@Autowired
private MovieCatalog movieCatalog;
private CustomerPreferenceDao customerPreferenceDao;
@Autowired
public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {
this.customerPreferenceDao = customerPreferenceDao;
}
// ...
}
@Resource(name = "x")
プライベート データ メンバーをアノテーションでマークするか、アプリケーション コンテキスト XML でコンストラクター インジェクションを使用してワイヤリングすることができます。
Spring ではアノテーションと XML 構成を混在させることができます。オール オア ナッシングである必要はありません。
<bean id="myClass" class="foo.bar.MyClass">
<constructor-arg ref="yourArgRefHere"/>
</bean>