
어노테이션은 코드에 추가 정보를 제공하는 메타데이터로, 컴파일러, 빌드 도구, 프레임워크 등에게 다양한 신호를 전달하는 역할
실제로 어노테이션 자체가 코드의 동작을 직접 바꾸지는 않으며, 주로 "이 코드는 이런 용도로 사용된다"는 알림(표시)의 역할
| 용도 | 예시 어노테이션 | 설명 |
|---|---|---|
| 컴파일러에게 | @Override | 오버라이딩 메서드임을 컴파일러에 알림, 잘못된 오버라이딩 방지 |
| 빌드 도구에게 | @Getter, @Setter | Lombok에서 사용, 빌드 시 자동으로 getter/setter 생성 |
| 프레임워크에게 | @Component | 스프링에서 사용, 해당 클래스를 Bean으로 등록하도록 알림 |
스프링 프레임워크는 IoC(제어의 역전)와 DI(의존성 주입)를 지원하기 위해 어노테이션을 적극적으로 활용합니다.
@Component
가장 기본적인 스프링 컴포넌트 표시 어노테이션.
해당 클래스를 스프링이 관리하는 Bean으로 등록
@Service
비즈니스 로직을 담당하는 서비스 계층에 사용.
@Component의 특수화로, 역할을 명확히 드러냄
@Repository
데이터베이스와의 연동을 담당하는 DAO 계층에 사용.
예외 변환 등 추가 기능이 적용
@Controller
웹 요청을 처리하는 컨트롤러 계층에 사용.
주로 Spring MVC에서 사용되며, 프레젠테이션 계층을 명시
이들 어노테이션은 모두
@Component의 하위 타입(특수화)으로,
역할에 따라 클래스를 구분하고, 스프링이 자동으로 Bean으로 등록하게 도와줍니다
어노테이션은 자바와 스프링에서 코드에 의미를 부여하고, 자동화와 관리, 계층 구분 등 다양한 역할을 수행하는 중요한 메타데이터 도구