Spring Annotation 2

사나이장대산·2024년 11월 1일

Spring

목록 보기
5/26

Annotation 자세히 보기

1.@Component


Spring Bean에 등록하는 역할을 수행한다.
Spring Bean은 애플리케이션의 구성요소를 정의하는 객체이다.

  • @Indexed
    • 클래스가 컴포넌트 스캔의 대상으로 Spring Bean에 더 빠르게 등록되도록 도와준다.

2.@Target

  • @Target 이 선언된 하위 어노테이션이 어떤 범위에 적용되는지 설정한다.
  • ElementType Enum 속성
  • 각각의 Enum마다 적용되는 범위가 상단에 주석으로 설명되어 있다.

3.@Retention

  • @Retention 하위의 어노테이션이 얼마나 오래 유지되는지를 결정한다.
  • RetentionPolicy Enum 속성
  1. SOURCE
    • 소스 코드(.java)에서만 유지된다.
    • 컴파일러에 의해 클래스 파일로 저장되지 않는다.
  2. CLASS
    • 컴파일된 클래스 파일(.class)에 저장되지만, JVM이 실행 시 읽지 않는다. (주석과 같음)
    • Default 값이다.
  3. RUNTIME
    • 클래스 파일(.class)에 저장되고, JVM에 의해 런타임 시점에 읽을 수 있다.
    • 즉, 실제 런타임 시점의 코드에 반영되어 영향을 준다.

4.@Documented


Javadoc 등의 문서화 도구에 의해 문서화되어야 함을 나타낸다.

@Controller VS @RestController

개발에서 우선순위는 항상 자세히 선언된것이 우선순위가 높다.

@Controller다시보기

  • @Target(ElementType.Type)
    • Class, Interface, Annotation, Enum, Record Declaration(Java16) 에 적용할 수 있다.
  • @Retention(RetentionPolicy.RUNTIME)
    • 클래스 파일(.class)에 저장되고, JVM에 의해 런타임 시점에 읽을 수 있다.
  • @Document
    • Javadoc 등의 문서화 도구에 의해 문서화되어야 함을 나타낸다.
  • @Component
    • Spring Bean에 등록한다.

    • 싱글톤으로 관리된다.

      @RestController 다시보기

  • @Controller에 @ResponseBody가 결합된 어노테이션
  • @RestController는 @Controller와 달리 각 메서드마다 @ResponseBody를 추가하지 않아도 된다

@ResponseBody 자세히 보기

  • @Target{ElementType.TYPE, ElementType.METHOD} 이지만, @RestController@Target(ElementType.TYPE) 이기 때문에 TYPE 범위에만 @ResponseBody가 적용된다.
profile
사나이 張大山 포기란 없다.

0개의 댓글