자바의 Annotation은 Java 5부터 등장한 기능으로, 영어로는 주석이란 뜻이지만 주석 그 이상의 기능을 한다. 어노테이션은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종으로, 어노테이션이 붙은 코드는 어노테이션 정보에 따라 연결 방향이 결정된다.
필드, 생성자, setter메서드에 적용할 수 있다.
객체를 직접 생성하지 않고 외부로부터 받아 사용하도록 의존성을 주입한다.
클래스에만 적용할 수 있다.
특정 클래스가 컨트롤러 역할을 수행함을 나타낸다. 즉, 이 클래스가 웹 요청을 받아 처리하는 핸들러 역할을 수행한다고 표시하는 것이다.
일반적으로 @RequestMapping이 붙은 핸들러 메소드와 함께 사용된다.
클래스와 메서드 수준에서 모두 사용할 수 있다.
클라이언트가 보낸 웹 요청을 어떤 컨트롤러(요청을 받아 처리handle하는 클래스) 메소드에 매핑할 것인지를 알려주는 어노테이션.
요청 주소(URI)와 방식(GET, POST 등)을 설정할 수 있다.
JSP + Servlet에서는 컨트롤러 역할을 하는 서블릿에
@WebServlet("/BoardServlet")
이런 식으로 표시했었다. 🔗 참고
차이는... 전체를 보는 게 중요하니까 일단은 넘어간다.
Component 어노테이션이 세분화된 것 중 하나로, 클래스가 저장, 검색, 수정, 삭제 등 메커니즘을 제공한다는 것을 의미한다. - DAO 패턴에 매우 가깝다.
참고1 Java Annotation https://www.nextree.co.kr/p5864/
참고2 Spring Annotation https://www.geeksforgeeks.org/spring-framework-annotations/