인프런 커뮤니티 질문&답변

윤제리님의 프로필 이미지
윤제리

작성한 질문수

스프링 핵심 원리 - 기본편

질문있습니다!

해결된 질문

작성

·

261

0

안녕하세요. 강의 듣다 궁금한 것이 있어 질문 드립니다.

입문자라 기본적인 것도 많이 모릅니다. ㅠ

public class ApplicationContextExtendsFindTest {
    AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class);

    @Test
    @DisplayName("부모 타입으로 조회시 자식이 둘 이상 있으면, 중복 오류가 발생한다")
    void findBeanByParentTypeDuplicate() {
        assertThrows(NoUniqueBeanDefinitionException.class, ()->ac.getBean(DiscountPolicy.class));
    }

  ......

    @Configuration
    static class TestConfig {
        @Bean
        public DiscountPolicy rateDiscountPolicy() {
            return new RateDiscountPolicy();
        }

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

이 테스트 클래스에서는 테스트용(?) 클래스?? 만들때 @Configuration 을 사용했는데

아래 테스트 클래스에서도 테스트용 클래스를 만드는데 @Configuration을 사용하지 않아서 궁금합니다.

class StatefulServiceTest {

    @Test
    void statefulServiceSingleton() {
        ApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class);
        StatefulService statefulService1 = ac.getBean(StatefulService.class);
        StatefulService statefulService2 = ac.getBean(StatefulService.class);

        //ThreadA: A사용자 10000원 주문
        int userAprice = statefulService1.order("userA", 10000);
        //ThreadB: B사용자 20000원 주문
        int userBprice = statefulService2.order("userB", 20000);

        //ThreadA: 사용자A 주문 금액 조회
//        int price = statefulService1.getPrice();
        System.out.println("price = " + userAprice);

//        Assertions.assertThat(statefulService1.getPrice()).isEqualTo(20000);
    }

    static class TestConfig {
        @Bean
        public StatefulService statefulService() {
            return new StatefulService();
        }
    }
}

좋은강의 감사합니다. 열심히 배우고 있습니다!!

답변 1

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 윤제리님

그렇네요! 원칙적으로 @Configuration을 사용하는 것이 맞습니다.

넣지 않아도 스프링 빈으로 등록하는데는 문제가 없지만, 연관관계를 설정할 때 문제가 될 수 있습니다. 관련해서 섹션5. @Configuration과 싱글톤을 참고해주세요^^!

윤제리님의 프로필 이미지
윤제리

작성한 질문수

질문하기