[Spring] Autowired 사용시 주의 (Feat. Custom Annotation)
·
JVM/Spring
한 타입(Interface)에 대해 여러 Bean 이 등록되어 있으면 어떻게 해결할 것인가? Autowired 동작 순서 Type Matching Type Matching 결과가 2개 이상인 경우 필드명이나 파라미터 명으로 빈 이름 매칭. public class OrderServiceImpl implements OrderService{ // 구현체가 아닌 Interface (역할) 에만 의존해야한다. => DIP 원칙 준수 private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired // Type Matching 시도 // 타입 매칭 결과가 2개 이상인 경우 필드명 혹은 파라미터..
[Spring] Component Scan, DI autowired
·
JVM/Spring
When to use component scan? 코드레벨에서 설정 정보가 없어도 자동으로 스프링 빈을 자동 등록하려 할 때 How to use? class 어노테이션으로 '@Component' 혹은 그 자식 어노테이션을 붙여준다. 이때, 생성자에는 '@Autowired' 등으로 자동으로 DI가 일어날 수 있도록 매핑해주는 것이 좋다. @Component public class RateDiscountPolicy implements DiscountPolicy { private final int discountPercent = 10; // .. 생략 } 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다. (PascalCase -> camelCase) 빈 이름 직접 지정시 @Compo..