🔹 @Component -> 컴포넌트 스캔에서 사용
🔹 @Controller -> 스프링 MVC 컨트롤러에서 사용
스프링 MVC 컨트롤러로 인식
🔹 @Service -> 스프링 비즈니스 로직에서 사용
🔹 @Repository -> 스프링 데이터 접근 계층에서 사용
스프링 데이터 접근 계층으로 인식, 데이터 계층의 예외를 스프링 예외로 변환
🔹 @Configuration -> 스프링 설정 정보에서 사용
스프링 설정 정보로 인식, 스프링 빈이 싱글톤을 유지하도록 추가 처리
➡️ 컴포넌트 스캔으로 스프링 빈에 등록됨
어노테이션이 특정 어노테이션을 가지고 있는 것을 인식할 수 있는 것은 스프링이 지원하는 기능
자바 언어가 지원하는 기능 아님, 어노테이션에는 상속 관계라는 것이 없음
basePackes : 탐색할 패키지의 시작 위치 지정
@ComponentScan(
basePackages = "com.example" // 해당 패키지를 포함해서 하위 패키지 모두 탐색
// basePackages = {"com.example","com.example.service"} // 시작 위치 여러개 지정 가능
// 지정하지 않으면 @ComponentScan이 붙은 설정 정보 클래스의 패키지가 시작 위치
)
시작 위치를 지정하는 것 보다는 '설정 정보 클래스'를 프로젝트 최상단에 위치 시키는 것을 권장
ex) AppConfig.class를 com.example에 위치시킴
인프런 스프링 핵심 원리 - 기본편 (김영한) 참조