어노테이션 정리
- 참고: 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에 링크