2017-12-19 23 views
0

웹 요청에서 호출되는 @Service 클래스가 있습니다.생성자가있는 목록의 @Autowired 객체를 초기화하는 방법

그것은 구현 된 형식 목록에있는 항목 중 하나가 생성자가있는 경우를 제외하고 의도 한대로이 작동

private List<Interface> interfaceServices; 

@Autowired 
public ValidateInterfaceService(List<Interface> interfaceServices) { 
    this.interfaceServices = interfaceServices; 
} 

의 개체 목록을 초기화 생성자를 가지고있다.

@Service 
@Order(3) 
public class EvaluateExampleWithConstructor implements Interface { 

private LocalDate busDate; 

@Autowired 
public EvaluateExampleWithConstructor(LocalDate busDate) { 
    this.busDate = busDate; 
} 

나는 시도하고 코드 생성자에 전달 된 값이 나는이 초기화 어떻게 방법을 위해 필요한 경우

"디폴트 생성자가 발견되지 않는"으로 실행할 수 없습니다 목록에이 클래스가있는 경우 목록이 올바르게 표시 되었습니까?

+3

중요하지 않습니다. 주요 문제는 'LocalDate'유형의 빈을 가지고 있지 않아서 실제로 빈을 구성 할 수 없다는 것입니다. –

+0

어디서, ValidateInterfaceService 클래스 내에? @Autowired LocalDate busdate; ? –

+0

응용 프로그램 컨텍스트에서 아니오. 당신은 생성자에서'@ Autowired'를 가지므로 유효한 빈으로 생성 될'LocalDate' 타입의 빈이 필요합니다. –

답변

0

문제점은 private LocalDate busDate이 컨텍스트에서 bean이 아니기 때문에 발생합니다.

@Configuration 
public class FooConfiguration { 

    @Bean 
    public LocalDate busDate() { 
     return ... 
    } 

} 

참고이 오히려 이상한 보이는, 당신은 e.q., 다른 방법으로이 날짜를 초기화하여 사용 사례에 따라 더 나을 수 있습니다 :이 같은 주사에 대한 LOCALDATE를 만들 수 있습니다 @Value을 사용하십시오.