소개
게시글
질문&답변
인텔리제이 말풍선 숨기기 설정에 대해서
해결했습니다 ㅠ(사진)컨트롤+알트+s 로 설정에 들어간 다음,Code Completion 최하단에 있는 Parameter Info 란에서 두번째꺼를 끄면 되는군요.
- 1
- 1
- 396
질문&답변
@Autowired나 @Qualifier, @Primary를 사용해야하는 이유
"어차피 우선순위에서 벗어난 빈은 사용하지 않는다는 것이고 사용하지 않는 빈은 @Component를 삭제하여 빈으로 등록하지 않는 것이 더 효율적"이라고 말씀하셨는데, 여기에 답이 있는 것 같습니다. @Component를 삭제하여 사용하지 않으려면 클래스를 열어야 하는데 이러한 행위가 OCP 위반이라서가 아닐까요?
- 0
- 2
- 389
질문&답변
componentscan시 구현체 변경
저도 강의를 보다가 작성자님께서 지적하신 부분이 너무 궁금했어요.그런데 곰곰이 생각해보니까, 처음에 @Component가 붙은 FixDiscountPolicy를 사용하다가 @Component가 붙은 RateDiscountPolicy를 추가로 만들었다고 했을 때 나중에 스프링 설정 클래스(@Configuration가 있는 클래스)에서 excludeFilters 속성을 사용하여 배제 시키면 구현체가 변경되는 결과를 얻을 수 있잖아요? 그러면 개발자 입장에서는 일단 구현체에 @Component를 때려 박아서 개발하다가 변경되어 제외해야 할 클래스가 있다면 스프링 설정 클래스의 @ComponentScan에서 클래스명으로 배제시키는 것이 편한 것 같아요. 기존의 @Bean을 사용한 방식이 "포함할 구현체"에 초점이 맞추어졌다면 @Component를 사용한 방식은 "배제할 구현체"에 초점이 맞추어져 있지 않나라는 생각이 드네요.혹시 이와 관련해서 제가 잘 이해하고 있는지 추가적으로 답변이 있으면 좋겠네요 ㅠㅠ참고로, 양쪽 구현체에 @Component가 붙은 상태에서 필터로 FixDiscountPolicy를 배제하지 않고 테스트 실행해보면 다음과 같은 오류가 뜨네요.org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\Users\ ~경로~ \OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy, rateDiscountPolicy오류문을 보면 대략 "OderServiceImpl.class에서 DiscountPolicy타입을 사용하는데 이 인터페이스 밑으로 구현체가 2개 있어서 어느 쪽으로 연결해야 할 지 모르겠어"라는 뜻이네요.
- 1
- 1
- 148