2011-04-07 7 views
6

현재는 AnnotationConfigApplicationContextClasspathXmlApplicationContext을 사용하여 혼합되었습니다. AnnotationConfigApplicationContext을 상위 컨텍스트로 사용합니다. 그러나 AnnotationConfigApplicationContext에 정의 된 bean은 ClasspathXmlApplicationContext에 정의 된 bean을 잘 처리하지 못한다는 것을 알게되었습니다. 그래서 어쨌든 ClasspathXmlApplicationContext을 삭제하고 내 애플리케이션을 AnnotationConfigApplicationContext으로 만 사용하고 싶습니다.문맥 : 구성 요소 스캔 방식으로 프로그래밍?

문제는, 전적으로 <context:component-scan>을 어떻게 바꿀지 모르겠군요. AnnotationConfigApplicationContext.scan(...)을 사용하여 패키지 스캔을 쉽게 할 수 있지만 AnnotationConfigApplicationContext에 포함/제외 패턴을 추가 할 방법이없는 것 같습니다.

아이디어가 있으십니까?

+0

는 또한 http://stackoverflow.com/questions/259140/scanning-java-annotations-at-runtime를 살펴 대신 당신은 아마 누락 된 방법을 AnnotationConfigApplicationContext에서 코드를 복사하고 추가해야 –

답변

5

등급이 AnnotationConfigApplicationContext 인 것처럼 보이지 않아 기본 제공 제외/포함 필터를 제공합니다. 내부적으로 클래스는 ClassPathBeanDefinitionScanner의 인스턴스를 사용하여 addExcludeFilteraddIncludeFilter 메소드를 제공하는 주석을 스캔합니다. 안타깝게도이 필드는 private이고 getter 메서드가 없으므로 AnnotationConfigApplicationContext 확장을 구현하고 include 및 exclude 메서드를 추가 할 수 없습니다.

public void addExcludeFilter(TypeFilter excludeFilter) 
{ 
    this.scanner.addExcludeFilter(excludeFilter); 
} 

public void addIncludeFilter(TypeFilter includeFilter) 
{ 
    this.scanner.addIncludeFilter(includeFilter); 
} 
관련 문제