Today I Learned_220705

최대 1 분 소요

Spring Framework

인프런 스프링 강의 수강

Bean

빈 조회 시, 부모 타입으로 조회하면 자식 타입도 함께 조회된다.

[예시]

상속 관계가 아래와 같을 때

    @Configuration
    static class TestConfig{
        //상위 타입으로 선언하는 이유 : 개발하거나 설계를 할 때 역할과 구현을 쪼개는 것이라고 보면 됨
        //얘는 DiscountPolicy라고 판별
        //다른데서도 의존성 주입하기 편함
        @Bean
        public DiscountPolicy rateDisCountPolicy(){
            return new RateDiscountPolicy();
        }

        @Bean
        public DiscountPolicy fixDiscountPolicy(){
            return new FixDiscountPolicy();
        }
    }

부모 타입으로 조회 시, 두 개의 자식들이 조회되며, NoUniqueBeanDefinitionException이 발생한다.

 void findBeanByParentTypeDuplicate(){
        DiscountPolicy bean = ac.getBean(DiscountPolicy.class); 
        assertThrows(NoUniqueBeanDefinitionException.class,
                () -> ac.getBean(DiscountPolicy.class));
    }

아래와 같이 Bean의 이름을 가지고 조회하거나

DiscountPolicy rateDiscountPolicy = ac.getBean("rateDiscountPolicy", DiscountPolicy.class);

부모 타입으로 모두 조회한 다음, 내부에서 조회해야 한다.

Map<String, DiscountPolicy> beansOfType = ac.getBeansOfType(DiscountPolicy.class);

자동 의존관계 주입을 할 때 이 내용들을 알아두어야 함!

카테고리:

업데이트: