묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
@Bean 등록과 static method 선언 시 성능 차이가 많이 날까요?
안녕하세요 강의 잘 듣고 있습니다. 외부 라이브러리 bean 등록에 대해서 생각하다가.. 제가 일하다가 외부 라이브러리(ModelMapper)를 추가한 적이 있었는데요 그땐 bean에 대한 개념을 잘 모를때라 class 안에 static method로 만들어서 필요할때마다 class 를 호출해서 사용하곤 했습니다. 근데 수업을 들어보니 잘못된 거라는 생각이 드는데요.. 많이 사용하는 라이브러리라 bean을 등록하고 의존성 주입해서 변경하려면 많은 작업이 필요하다고 생각이 듭니다. 그만큼 많은 성능을 차지하는지.. 아니면 이정도는 괜찮은지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
질문있습니다!
안녕하세요. 강의 듣다 궁금한 것이 있어 질문 드립니다. 입문자라 기본적인 것도 많이 모릅니다. ㅠ 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(); } } } 좋은강의 감사합니다. 열심히 배우고 있습니다!!