2013-02-19 52 views
0

我定义我的服务为:弹簧自动装配(使用@Autowired)进行定义的构造

@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

它不工作这样...

Spring使用无参数的构造函数来创建豆类及后它的电线依赖于那些豆子。

你的情况Spring可以不知道你要传递给构造函数的字符串...

例如,你可以使用java配置来创建你的服务的bean(并从豆中移除@Component)

@Configuration 
public class Config { 

    @Bean 
    MyService myService() { 
     return new MyService("some string"); 
    } 

} 
+0

谢谢Betlista。我明白了你的想法,并会看到我的应用程序能否适合你。 – 2013-02-25 10:07:35