복붙노트

[SPRING] 컨텍스트 : 구성 요소 스캔 방식의 프로그래밍 방식?

SPRING

컨텍스트 : 구성 요소 스캔 방식의 프로그래밍 방식?

현재 AnnotationConfigApplicationContext 및 ClasspathXmlApplicationContext를 사용하여 혼합되어 있으며 부모 컨텍스트로 AnnotationConfigApplicationContext를 만듭니다. 하지만 AnnotationConfigApplicationContext에 정의 된 Bean이 ClasspathXmlApplicationContext에 정의 된 Bean에 잘 대처하지 못하는 것을 발견했습니다. 어쨌든 ClasspathXmlApplicationContext를 삭제하고 내 애플리케이션에서 AnnotationConfigApplicationContext 만 사용하게하고 싶습니다.

문제는, 을 대체하는 방법을 모른다는 것입니다. AnnotationConfigApplicationContext.scan (...)을 사용하여 패키지 스캔을 쉽게 할 수는 있지만 AnnotationConfigApplicationContext에 include / exclude 패턴을 추가 할 방법이없는 것 같습니다.

어떤 생각?

해결법

  1. ==============================

    1.AnnotationConfigApplicationContext 클래스가 배제 / 포함 필터를 제공하는 것처럼 보이지 않습니다. 클래스는 내부적으로 ClassPathBeanDefinitionScanner 인스턴스를 사용하여 addExcludeFilter 및 addIncludeFilter 메소드를 제공하는 주석을 검색합니다. 안타깝게도이 필드는 private이며 getter 메서드가 없으므로 AnnotationConfigApplicationContext를 확장하고 include 및 exclude 메서드를 추가하는 구현을 작성할 수 없습니다. 대신 AnnotationConfigApplicationContext에서 코드를 복사하고 누락 된 메소드를 추가해야 할 것입니다.

    AnnotationConfigApplicationContext 클래스가 배제 / 포함 필터를 제공하는 것처럼 보이지 않습니다. 클래스는 내부적으로 ClassPathBeanDefinitionScanner 인스턴스를 사용하여 addExcludeFilter 및 addIncludeFilter 메소드를 제공하는 주석을 검색합니다. 안타깝게도이 필드는 private이며 getter 메서드가 없으므로 AnnotationConfigApplicationContext를 확장하고 include 및 exclude 메서드를 추가하는 구현을 작성할 수 없습니다. 대신 AnnotationConfigApplicationContext에서 코드를 복사하고 누락 된 메소드를 추가해야 할 것입니다.

    public void addExcludeFilter(TypeFilter excludeFilter) 
    {
        this.scanner.addExcludeFilter(excludeFilter);
    }
    
    public void addIncludeFilter(TypeFilter includeFilter) 
    {
        this.scanner.addIncludeFilter(includeFilter);
    }
    
  2. from https://stackoverflow.com/questions/5575470/doing-contextcomponent-scan-programatic-way by cc-by-sa and MIT license