可能重复:
Anyway to @Autowire a bean that requires constructor arguments?
在我的控制器中,我想使用@Autowired使用方法/构造函数自动装配注入一个类。例如使用:
@Autowired
private InjectedClass injectedClass;
我的问题是注入的类injectClass有一个构造函数,我需要将一个变量从控制器传递给构造函数。如何将值传递给构造函数?
答案 0 :(得分:5)
如果您正在使用注释,则可以将@Autowired注释应用于MyClass的构造函数,该构造函数将自动连接您传递给MyClass特殊构造函数的bean。考虑一下例如。
public class MovieRecommender {
@Autowired
private MovieCatalog movieCatalog;
private CustomerPreferenceDao customerPreferenceDao;
@Autowired
public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {
this.customerPreferenceDao = customerPreferenceDao;
}
// ...
}
答案 1 :(得分:3)
您可以使用@Resource(name = "x")
注释标记私有数据成员,也可以在应用程序上下文XML中使用构造函数注入来连接它们。
注释和XML配置可以在Spring中混合使用。它不一定是全部或全部。
<bean id="myClass" class="foo.bar.MyClass">
<constructor-arg ref="yourArgRefHere"/>
</bean>