콘텐츠로 이동

2021 05 09

2021-05-09

어노테이션 스터디

  • 어노테이션 정리 - 참고: https://parkadd.tistory.com/54 - 정의 - 사전적 의미로 주석을 의미, 프로그램에 대한 데이터를 제공하는 메터데이터의 한 형태 - 용도 - 컴파일러에 정보 제공 ex) @Override, @SuppressWarnings - 컴파일 시간 및 배포 시간 처리 (코드, XML 파일 생성) - 런타임 처리 (Java Reflection) - 특징 - 어노테이션도 바이트코드 까보면 인터페이스의 특징 가짐, 인터페이스의 한 종류임 - 모든 어노테이션은 java.lang.annotation.Annotation을 상속받음 - 메타 어노테이션 - 어노테이션을 위한 어노테이션 - @Retention - SOURCE: 소스 파일에만 존재, 클래스 파일에는 X - CLASS: 클래스 파일에 존재, 실행시 사용 불가 - RUNTIME: 클래스 파일에 존재, 실행시 사용 가능 - @Target - 어노테이션 적용 가능한 대상 지정
  • Reflection - 정의 - 구체 클래스 타입 몰라도, 해당 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API - 모든 파일은 클래스로더에 의해 메모리에 올라갈 때 클래스에 대한 정보가 담긴 객체를 생성... 클래스 객체 - 이를 참조할라면 "클래스이름.class" 형식 사용 - 클래스이름.class를 이용해서 클래스의 필드/생성자/메서드 정보 얻기 가능 - 해당 메서드들을 이용해서 어노테이션 정보 취득 가능
  • Keyword - Javadoc - Java 코드에서 API 문서를 HTML 형식으로 생성해주는 도구 - Handler Argument Resolver - Spring <-> Controller - Lombok - 참고: https://dololak.tistory.com/783 - getter, setter, toSTring 등의 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리 - AnnotationProcessor - class loader - 참고: https://javacan.tistory.com/entry/1 - 자바는 동적으로 클래스 읽어옴 - 런타임에 모든 코드가 JVM에 링크