package hello.core.scan.filter;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import static org.assertj.core.api.Assertions.assertThat;
import static org.springframework.context.annotation.ComponentScan.Filter;
public class ComponentFilterAppConfigTest {
@Test
void filterScan() {
ApplicationContext ac = new
AnnotationConfigApplicationContext(ComponentFilterAppConfig.class);
BeanA beanA = ac.getBean("beanA", BeanA.class);
assertThat(beanA).isNotNull();
Assertions.assertThrows(
NoSuchBeanDefinitionException.class,
() -> ac.getBean("beanB", BeanB.class));
}
@Configuration
@ComponentScan(
includeFilters = @Filter(type = FilterType.ANNOTATION, classes =
MyIncludeComponent.class),
excludeFilters = @Filter(type = FilterType.ANNOTATION, classes =
MyExcludeComponent.class)
)
static class ComponentFilterAppConfig {
}
}
@ComponentScan(
includeFilters = @Filter(type = FilterType.ANNOTATION, classes =
MyIncludeComponent.class),
excludeFilters = @Filter(type = FilterType.ANNOTATION, classes =
MyExcludeComponent.class)
)
'SPRING > Spring' 카테고리의 다른 글
[스프링| 스프링 핵심 원리 | 기본편 | 의존관계 자동 주입] 생성자 주입을 선택해라! (0) | 2024.05.14 |
---|---|
[스프링| 스프링 핵심 원리 | 기본편 | 의존관계 자동 주입] 다양한 의존관계 주입 방법 (0) | 2024.05.14 |
[스프링| 스프링 핵심 원리 | 기본편 | 컴포넌트 스캔]컴포넌트 스캔과 의존관께 자동 주입 시작하기 (0) | 2024.05.13 |
[스프링| 스프링 핵심 원리 | 기본편 | 싱글톤 컨테이너]@Configuration과 싱글톤 (0) | 2024.05.09 |
[스프링| 스프링 핵심 원리 | 기본편 | 싱글톤 컨테이너] 싱글톤 컨테이너, 싱글톤 방식의 주의점 (0) | 2024.05.09 |