* intro
- @Component, @Controller, @Service, @Repository 각각의 클래스를 특정 역할을 수행하는 Spring Bean으로 등록할 때 사용됩니다. 각 어노테이션은 클래스가 어떤 역할을 하는지 명시적으로 나타냄. Spring의 @ComponentScan 기능을 통해서 자동으로 Bean으로 등록됩니다. @Controller, @Service, @Repository는 내부적으로 @Component를 사용합니다.
* Component
- 가장 일반적인 형태의 어노테이션, 특정 역할에 종속되지 않는 일반적인 Spring Bean 나타냄.
* Service
- 비즈니스 로직을 수행하는 클래스에 사용됨.
* Controller
- Spring MVC에서 웹 요청을 처리하는 컨트롤러 클래스에 사용되며 프레젠테이션 레이어의 Bean을 나타냄.
* Repository
- DB와의 상호작용을 수행하는 클래스에 사용됨.
Q. @Controller, @Repository 대신 @Component 사용하면 안되는가.
- Spring 6(SpringBoot 3) 이전 버전에서는 @Component + @RequestMapping 으로도 Bean 및 핸들러로 등록됩니다. 하지만 Spring 6 이후 부터 @Controller 외에는 핸들러로 등록하지 않아 웹 요청을 정상적으로 수행 불가능.
- @Service, @Controller, @Repository는 각각 특정 계층을 나타내므로, AOP의 포인트컷을 정의할 때 유용하게 사용 가능함. @Component를 사용하면 계층 구분이 불분명해져 AOP 적용이 어려워 짐.
'Computer Science > Spring' 카테고리의 다른 글
WebApplication 이해 (3) | 2024.12.18 |
---|---|
Spring과 Spring boot (0) | 2024.12.18 |
Spring 트래픽 처리 방법 (0) | 2024.12.10 |
동기 방식으로 외부 서비스를 호출할 때 외부 서비스 장애가 나면 어떻게 조치할 수 있을까. (0) | 2024.12.10 |
JSON에 대해서 ( Serialiazation, Deserialization ) (2) | 2024.12.08 |