Spring中是否可以仅自动装配构造函数的特定参数?
我定义了:
<bean class="MyClass">
<constructor-arg name="name" value="object name" />
</bean>
使用:
public class MyClass{
private String name;
private MyDAO dao;
@Autowired
public MyClass(String name, MyDao dao){
// assign...
}
// ...
}
现在我想要MyDao
对象自动装配,同时明确定义name
参数。
有可能吗?
使用XML定义bean需要手动定义所有参数吗?
答案 0 :(得分:5)
您不能使用自动装配的构造函数,因为它会影响所有参数,但您可以这样做:
public class MyClass{
private String name;
@Autowired
private MyDAO dao;
public MyClass(String name){
// assign only name
}
// ...
}
它类似于为DAO设置一个setter,但是你没有在你的类中公开它的公共setter。
答案 1 :(得分:2)
如果我正确地阅读了您的问题,您就会问是否可以连接您在上下文中已定义的MyDao实例,并为name参数提供硬编码的字符串值。如果这是正确的,您可以将您的类配置为
<bean class="MyClass">
<constructor-arg value="Hardcoded string value for the name" />
<constructor-arg ref="myDaoInstance" />
</bean>
您的上下文文件中的其他位置
<bean class="MyDao" id="myDaoInstance>
//relevant config
</bean>
答案 2 :(得分:0)
好像你应该将@Autowired添加到MyDao dao;声明,然后更改您的构造函数以获取名称参数。您将自动访问MyDao
答案 3 :(得分:0)