티스토리 뷰
meta data : 데이터를 위한 데이터, 사진 데이터를 위한 시간, 장소, 플래시 유무등을 meta data라 말함
annotation : 주석이라는 사전적인 의미를 가지며 java에서 주석이라는 개념을 표현하기 위한 방식 중 하나
Java 5부터 제공되는 기능입니다.
데이터 유효성검사등을 제공하며, annotation을 잘 활용할 경우 코드가 깔끔해집니다.
annotation이 제공해주는 것
1. 코드 생성
2. 런타임 처리
3.컴파일러 지시문
Java 표준 주석 (built in annotation)
@Override
슈퍼클래스의 메서드를 재정의한 메서드라는 것을 알려줍니다.
compile때 @Override annotation이 설정된 method가 슈퍼클래스에서 찾을 수 없다면
컴파일이 불가능합니다.
@Deprecated
메서드 및 클래스를 더이상 사용하지 않는 것으로 표시합니다.
@SuppressWarnings
컴파일러의 경고를 억제합니다.
Meta Annotation
annotation을 위한 annotation입니다.
@Retention
@Retention이 부착된 Annotation이 삭제되는 시점을 결정합니다.
삭제되는 시점에 대한 정책은 'SOURCE, CLASS, RUNTIME' 3가지가 존재합니다.
1. SOURCE
compiler에 의해 삭제됩니다.
표식(@Override), 코드 치환용(Lombok library)으로 사용됩니다.
2. CLASS
compiler에 의해 기록되지만 .class 파일에만 존재합니다. runtime 시점에 접근이 불가능합니다. (compile)
maven/gradle로 받은 라이브러리는 class file(bytecode)만 포함됩니다.
"SOURCE" 정책으로 설정된 메타데이터들은 사라지고 맙니다.
해당 부분을 인지하고 "SOURCE", "CLASS"를 적절하게 사용하면 좋을 것 같습니다.
3. RUNTIME
runtime 시점에도 유지되며 해당 annotaion정보에 접근이 가능합니다. (runtime)
reflection기술로 runtime때 annotation의 정보를 획득하여 사용합니다.
예시로 Spring framework의 @Controller같은 annotation입니다.
@Controller, @Service등 사용자가 만든 annotation기반 빈들도
Spring이 reflection기술을 사용해 @Controller, @Service 등을 container에 등록합니다.
RUNTIME으로 정책이 설정되어있지 않다면 runtime때 annotation이 사라지고 맙니다.
@Target
annotation이 적용될수 있는 위치를 표현합니다.
@Documented
문서에도 annotation의 정보가 표현됩니다.
@Inherited
자식 클래스에 annotation의 정보가 상속됩니다.
@Repeatable
반본적으로 annotation을 설정할 수 있게 됩니다.
'Java & Kotlin' 카테고리의 다른 글
Java Buffer (0) | 2022.12.11 |
---|---|
Java Stream (0) | 2022.12.10 |
Java enum (0) | 2022.11.02 |
Java Thread (0) | 2022.10.30 |
Java Exception (0) | 2022.09.18 |
- Total
- Today
- Yesterday
- JPA
- jre11
- 백준 제로
- jre
- 백준
- boot 일대다
- jdk11
- jvm
- 백엔드
- 자사서비스
- JDK8
- 스택
- 개발자채용
- 다대일
- 프로그래머
- jre8
- 문제
- 관계설정
- Spring
- 스타트업
- java8
- boot
- springboot
- 코딩테스트
- 자바
- 백준 제로 자바
- mappedby
- 알고리즘
- JDK
- ㅃ
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |