2011-08-24 3 views
1

필요한 설정자가있는 빈 Config이 있습니다. 그러나 Bean 설정 파일에서 설정을 지정하지 않으면 누락 된 속성에 대한 예외가 발생하지 않습니다. 내가 OtherClassmatchSets 필드를 포함하지 않는 경우하나의 빈에 대해 @ 필수 속성이 확인되었지만 다른 빈에 대해서는 확인되지 않았습니다.

public class Config extends MatchSet{ 
    ... 
    @Required 
    public void setSections(List<Section> section){...} 
} 

public class OtherClass{ 
    ... 
    @Required 
    public void setMatchSets(List<MatchSet> sets){...} 
} 

public interface MatchSet{...} 

은 내가 BeanInitializationException를 얻을. 그러나 sections 필드를 Config으로 설정하지 않으면 예외가 발생하지 않습니다. OtherClass에 전달 된 MatchSet 목록의 요소 중 하나로 Config의 인스턴스를 전달하고 있습니다.

단위 테스트 (SpringJUnit4ClassRunner)를 사용하고 내 main (ClassPathXmlApplicationContext)을 사용하여이 작업을 시도했으며 동작은 두 경우 모두 동일합니다.

@Required 속성이 Config으로 확인되지 않는 이유는 무엇입니까? 그것은 MatchSet으로 전달 되었기 때문입니까?

감사합니다.

+0

다른 문제가 원인이었습니다. getter/setter가 제대로 설정되지 않았습니다. 주로, 이것은 메소드 체이닝을 설정하려고했기 때문에 setter로부터 null을 리턴하지 못하기 때문입니다. 또한, 설정에서 목록을 수락했지만 getter에서 ImmutableList를 반환했습니다. 이 조합으로 인해 Spring은 setter를 인식하지 못하므로 @Required 특성을 검사하지 않습니다. –

답변

0

다른 문제로 인해 발생한 것으로 나타났습니다. getter/setter가 제대로 설정되지 않았습니다. 주로, 메소드 체이닝을 설정하려고 시도했기 때문에 setter에서 null을 리턴하지 않았기 때문입니다. 또한 설정에서 List을 수락했지만 getter에서 ImmutableList을 반환했습니다. 이 조합으로 인해 스프링이 설정 기가 인식되지 않아 확인하지 못했습니다.

관련 문제