我已将我的服务定义为:
@Component("myService")
public class MyServiceImpl implements MyService {
public void serviceMethod(){
}
}
我在我的客户端程序中使用此服务如下所示:
Public Class{
@Autowired
MyService myService;
public void myMethod(){
myService.serviceMethod();
}
}
但是,如果我在我的服务中有以下定义的构造函数:
@Component("myService")
public class MyServiceImpl implements MyService {
private myVar;
public MyServiceImpl(String myVar){
this.myVar = myVar;
}
public void serviceMethod(){
}
}
问题: 如何在我的客户端程序中自动装配以便调用我定义的构造函数?
下面的方法使用默认构造函数初始化对象:
@Autowired
MyService myService;
答案 0 :(得分:0)
这不是那样的工作......
Spring使用no-arg构造函数来创建bean,然后将依赖关系连接到那些bean。
在你的情况下,Spring无法知道你想传递给构造函数的字符串......
例如,您可以使用java配置来创建Service bean(并从bean中删除@Component)
@Configuration
public class Config {
@Bean
MyService myService() {
return new MyService( "some string" );
}
}