강의 복습
자동등록
이전까지는 config, xml, 혹은 사용자 지정 설정 파일로 직접 스프링 빈을 등록했었다.
@ComponetScan, @Component, @Autowired 등의 사용은 이들을 편하게 자동으로 해준다.
@Component 말고도
@Configuration
@Service
@Controller
@Repository
이런것들이 붙어있어도 빈으로 등록된다
-> 사실 위 annotation 들은 @Component를 포함하고 있기 때문이다.
+어노테이션이 상속을 지원하고 이런건아닌데, 스프링 쓰면 비슷하게 동작한다.
옵션
컴포넌트 스캔은 다양한 옵션이있다.
FilterType이라고 한다.
FilterType은 5가지 옵션이 있다.
ANNOTATION: 기본값, 애노테이션을 인식해서 동작한다. ex) org.example.SomeAnnotation
ASSIGNABLE_TYPE: 지정한 타입과 자식 타입을 인식해서 동작한다. ex) org.example.SomeClass
ASPECTJ: AspectJ 패턴 사용 ex) org.example..*Service+
REGEX: 정규 표현식 ex) org\.example\.Default.* CUSTOM:
TypeFilter 이라는 인터페이스를 구현해서 처리 ex) org.example.MyTypeFilter
그런데 이런 옵션을 바꿔가며 하는거보다는 기본설정에 맞춰 사용이 권장된다고 한다.
(너무 감사하게 생각한다... 이걸 어떻게 달달 외우고 있다가 써먹어...)
우선순위
스프링 빈 등록은 말했듯이 자동등록, 수동등록이 가능하다.
그럼 같은이름으로 두개의 빈을 생성 해버리면, 우선순위는 어떻게 될까?
1. 자동+자동 = 에러
2. 자동 + 수동 = 수동
이긴한데,,, 스프링 부트에서는 2번도 에러뜬다고 한다.
이유는? 버그뜨면 진짜 잡기 힘드니까... 애매~하면 그냥 안되도록 하는게 좋다는걸 또다시 느낀다.
'Dev > Spring' 카테고리의 다른 글
8. 빈 생명주기 콜백 (0) | 2021.03.28 |
---|---|
7. 의존관계 자동 주입 (0) | 2021.03.28 |
5. 싱글톤 컨테이너 (0) | 2021.03.27 |
4. 스프링 컨테이너와 스프링 빈 (0) | 2021.03.27 |
2 & 3. 스프링 핵심 원리 이해 (0) | 2021.03.27 |