🎛️ ApplicationContext
스프링에서 핵심인 ApplicationContext
는 Bean을 관리해준다.
싱글톤 레파지토리로도 불리는데 Bean을 싱글톤으로 관리해주기 때문이다.
우리가 작성한 설정 정보를 적용시키려면 @Configuration
을 붙여준다. 여기에 싱글톤의 비밀이 들어있다.
설정 정보는 우리가 작성한 순수 자바 클래스가 빈으로 등록되는 것이 아니다.
작성한 자바 클래스를 상속받는 임의의 다른 클래스를 만들고 빈으로 등록한다.
여기서는 CGLIB라는 바이트코드 조작 라이브러리를 사용한다.
CGLIB 라이브러리가 내부적으로 어떻게 구현되었는지는 모르겠지만,
빈이 존재하면 기존 인스턴스를 반환하고 아니라면 생성할 수 있도록하는 클래스로 변환될 것이다.
따라서 @Configuration
의 비밀이 없다면 싱글톤이 깨지게 된다. 😋😋
📹 ComponentScan
빈을 등록함에 있어서 특별한 경우가 아니라면 직접 빈을 등록하지 않을 것이다.
그걸 가능케하는 것은 @ComponentScan
덕분이다.
애플리케이션을 시작하면서 빈이 등록할 때 ClassPathBeanDefinitionScanner
가 동작한다.
설정해둔 경로 상에 위치한 모든 @Component
들을 스캔해서 빈으로 등록한다.
빈 이름은 기본적으로 클래스명의 맨 앞글자만 소문자로 바꾼다.
스캔 범위는 basePackages
혹은 basePackageClasses
를 설정해서 범위를 조절할 수 있다.
default
는 어노테이션이 적용된 설정 정보 클래스의 패키지가 시작 위치가 된다.
필터 타입이 존재하긴 하는데 크게 기본값 외에는 크게 사용할 일이 없는 것 같다. 😋😋
😋 지극히 개인적인 블로그지만 훈수와 조언은 제 성장에 도움이 됩니다 😋
'개인 공부 > TIL' 카테고리의 다른 글
TIL : gradle-build-action (짧) (0) | 2023.10.27 |
---|---|
TIL : import문이 빨갛게 되고 import가 안되는 문제 고치기 (IntelliJ) (23) (0) | 2023.06.21 |
TIL : 위상정렬 알고리즘 (21) (0) | 2023.03.03 |
TIL : @PathVariable vs @RequestParam (20) (0) | 2023.01.10 |
TIL : Random VS SecureRandom (19) (0) | 2022.12.20 |
댓글