2013-02-19 3 views
0

Я определил свою службу как:Spring автоматического связывания (с использованием @Autowired) для Defined Конструктора

@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(){ 
     } 
} 

Вопрос: Как я могу autwire в моей клиентской программе, чтобы мой определенный конструктор был вызван?

Если ниже подхода инициализирует объект с конструктором по умолчанию:

@Autowired 
MyService myService; 

ответ

0

Это не работает таким образом ...

Spring использует не-Arg конструкторов для создания бобы и позднего провод зависимости к этим компонентам.

В вашем случае Spring не может знать, какие строки вы хотите передать в конструктор ...

Вы можете для конфигурации Пример использования Java для создания Service боб (и удалить @Component из вашего боба)

@Configuration 
public class Config { 

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

} 
+0

Thanks Betlista. Я получил вашу концепцию и посмотрю, смогу ли я поместиться в своем приложении. –

Смежные вопросы