
@Target()
@Retention() : 어노테이션의 수명 주기
1. RetentionPolicy.SOURCE: 컴파일 시에만 유효, 컴파일된 클래스 파일에는 포함되지 않음. 런타임에는 어노테이션이 존재하지 않음.
2. RetentionPolicy.CLASS: 컴파일된 클래스 파일에 포함, 런타임 시에는 사용할 수 없음. 어노테이션 정보를 유지하되 런타임에는 액세스할 수 없도록 함.
3. RetentionPolicy.RUNTIME: 컴파일된 클래스 파일에 포함, 런타임 시에도 어노테이션 정보에 접근 가능. 리플렉션(조만간 공부 후 포스팅 예정)을 통해 어노테이션 정보를 검색, 처리 가능.
@Controller
@Controller -> spring MVC 컨트롤러 표시
@RestController -> RestFul 웹 서비스에서 사용되는 특수 컨트롤러
@Controller & @RestController
| @Controller | @RestController | |
|---|---|---|
| 용도 | 웹 애플리케이션 컨트롤러 역할, HTML 페이지 렌더링 | RESTful 웹 서비스 엔드포인트, JSON 또는 XML 데이터 반환 |
| 반환 값 | 뷰 페이지(HTML), 모델 데이터 | 데이터 객체, JSON, XML |
@ResponseBody
메서드의 반환값을 직렬화, HTTP 응답 본문으로 설정