본문 바로가기

Spring106

[스프링 핵심 원리 - 기본편] 다양한 의존관계 주입 방법 의존관계 주입은 크게 4가지 방법이 있습니다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법입니다. 특징 생성자 호출시점에 딱 1번만 호출되는 것이 보장됩니다. 불변, 필수 의존관계에 사용 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, Discoun.. 2021. 9. 19.
[스프링 핵심 원리 - 기본편] 중복 등록과 충돌 자동 빈 등록 vs 자동 빈 등록 컴포넌트 스캔에 의해 자동으로 스프링 빈이 등록되는데, 그 이름이 같은 경우 스프링은 오류를 발생시킵니다. ConflictingBeanDefinitionException 예외 발생 수동 빈 등록 vs 자동 빈 등록 @Component public class MemoryMemberRepository implements MemberRepository { ... } @Configuration @ComponentScan( excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class) ) public class AutoAppConfig { @Bean(name = "memoryMemberRe.. 2021. 9. 19.
[스프링 핵심 원리 - 기본편] 필터 includeFilters: 컴포넌트 스캔 대상을 추가로 지정합니다. excludeFilters: 컴포넌트 스캔에서 제외할 대상을 지정합니다. 설정 정보와 전체 테스트 코드 public class ComponentFilterAppConfigTest { @Test void filterScan() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfig.class); BeanA beanA = ac.getBean("beanA", BeanA.class); assertThat(beanA).isNotNull(); assertThrows( NoSuchBeanDefinitionExcept.. 2021. 9. 19.
[스프링 핵심 원리 - 기본편] 탐색 위치와 기본 스캔 대상 탐색할 패키지의 시작 위치 지정 모든 자바 클래스를 다 컴포넌트 스캔하면 시간이 오래 걸립니다. 그래서 꼭 필요한 위치부터 탐색하도록 시작 위치를 지정할 수 있습니다. @ComponentScan( basePackages = "hello.core", } basePackages: 탐색할 패키지의 시작 위치를 지정합니다. 이 패키지를 포함해서 하위 패키지를 모두 탐색합니다. basePackages = {"hello.core", "hello.service"} 이렇게 여러 시작 위치를 지정할 수도 있습니다. 만약 지정하지 않으면 @ComponentScan이 붙은 설정 정보 클래스의 패키지가 시작 위치가 됩니다. 권장하는 방법 패키지 위치를 지정하지 않고, 설정 정보 클래스의 위치를 프로젝트 최상단에 두는 것입니다.. 2021. 9. 19.