2013-02-19 90 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