어노테이션대장(수정 예정)

주성천·2023년 10월 31일

@RestController

@Target()

  • 해당 어노테이션을 적용할 대상의 타입을 지정(사용 범위를 제한).
  • 사용 범위를 명시적으로 제한함으로써 코드 사용의 안정성과 가독성, 유지보수에 이점.
    ElementType.TYPE(클래스, 인터페이스, 열거형 등)
    ElementType.FIELD
    ElementType.METHOD
    ElementType.PARAMETER
    ElementType.CONSTRUCTOR
    ElementType.LOCAL_VARIABLE
    ElementType.ANNOTATION_TYPE
    ElementType.PACKAGE

@Retention() : 어노테이션의 수명 주기
1. RetentionPolicy.SOURCE: 컴파일 시에만 유효, 컴파일된 클래스 파일에는 포함되지 않음. 런타임에는 어노테이션이 존재하지 않음.
2. RetentionPolicy.CLASS: 컴파일된 클래스 파일에 포함, 런타임 시에는 사용할 수 없음. 어노테이션 정보를 유지하되 런타임에는 액세스할 수 없도록 함.
3. RetentionPolicy.RUNTIME: 컴파일된 클래스 파일에 포함, 런타임 시에도 어노테이션 정보에 접근 가능. 리플렉션(조만간 공부 후 포스팅 예정)을 통해 어노테이션 정보를 검색, 처리 가능.

@Controller

  • View를 반환하는 Controller 구조 - 출처
    View를 반환하는 Controller 구조, 출처: https://mangkyu.tistory.com/49

  • Data를 반환하는 Controller 구조 - 출처
    Data를 반환하는 Controller 구조, 출처: https://mangkyu.tistory.com/49

  • RestController 구조 - 출처
    RestController 구조, 출처: https://mangkyu.tistory.com/49

@Controller -> spring MVC 컨트롤러 표시
@RestController -> RestFul 웹 서비스에서 사용되는 특수 컨트롤러
@Controller & @RestController

@Controller@RestController
용도웹 애플리케이션 컨트롤러 역할,
HTML 페이지 렌더링
RESTful 웹 서비스 엔드포인트,
JSON 또는 XML 데이터 반환
반환 값뷰 페이지(HTML),
모델 데이터
데이터 객체,
JSON,
XML

@ResponseBody
메서드의 반환값을 직렬화, HTTP 응답 본문으로 설정

profile
기록과 정리

0개의 댓글