TIL

Spring Annotation

ac012235 2024. 12. 8. 19:18

@Slf4j

  • 로그를 남길 때 사용
  • 실제 운영 환경에서는 System.out.println();을 사용하여 Console에 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용하여 로그를 출력한다.
  • Log Level 설정을 통하여 Error 메세지만 출력하도록 하도록 하기도 하고 로그 메세지를 일자별로 모아서 저장하여 외부 저장소에 보관하기도 한다.
  • Log Level (TRACE -> DEBUG -> INFO -> WARN -> ERROR) (default값은 INFO)
  • # com.example.springbasicannotation 하위 경로들의 로그 레벨을 설정한다. logging.level.com.example.springbasicannotation=TRACE ( resources -> application.properties)

 

@Controller

  • View가 있는 경우에 사용
  • return 값이 String이면 View name으로 인식
  • 논리이름 : 파일경로와는 별개로 뷰를 찾기 위한 이름
  • 물리이름 : prefix (경로) + suffix(확장자) 경로 이름

@RestController

  • 응답할 Data가 있을 경우 사용
  • 현재는 대부분 @RestController를 사용하여 API가 만들어진다. (Restful API)
  • return 값으로 View를 찾는 것이 아니라 HTTP Message Body에 Data를 입력한다.
  • @Controller에 @ResponseBody가 결합된 어노테이션
  • @RestController는 @Controller와 달리 각 메서드마다 @ResponseBody를 추가하지 않아도 된다.

@Component

  • Spring Bean에 등록하는 역할을 수행한다.
  • Spring Bean은 애플리케이션의 구성 요소를 정의하는 객체이다.
  • @Indexed (클래스가 컴포넌트 스캔의 대상으로 Spring Bean에 더 빠르게 등록되도록 도와준다.)

@Target

  • @Target 이 선언된 하위 어노테이션이 어떤 범위에 적용되는지 설정한다.  ex) @Target(ElementType.TYPE)

 

@Retention

 

  • @Retention 하위의 어노테이션이 얼마나 오래 유지되는지를 결정한다. ex) @Retention(RetentionPolicy.RUNTIME)

 

  1. SOURCE
    • 소스 코드(.java)에서만 유지된다.
    • 컴파일러에 의해 클래스 파일로 저장되지 않는다.
  2. CLASS
    • 컴파일된 클래스 파일(.class)에 저장되지만, JVM이 실행 시 읽지 않는다. (주석과 같음)
    • Default 값이다.
  3. RUNTIME
    • 클래스 파일(.class)에 저장되고, JVM에 의해 런타임 시점에 읽을 수 있다.
    • 즉, 실제 런타임 시점의 코드에 반영되어 영향을 준다

@Documented

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

'TIL' 카테고리의 다른 글

Spring Annotation3  (1) 2024.12.10
Spring Annotation2  (0) 2024.12.09
Spring MVC  (0) 2024.12.07
stream  (0) 2024.12.06
Java 문법 1주차 숙제  (3) 2024.10.14