일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- react
- MySQL
- MSA
- JavaScript
- spring webflux
- Data Structure
- c언어
- Proxy
- mongoDB
- IT
- Heap
- Java
- 알고리즘
- JPA
- 파이썬
- 운영체제
- 네트워크
- OS
- redis
- Kafka
- Algorithm
- 자바
- 컴퓨터구조
- design pattern
- Galera Cluster
- C
- 디자인 패턴
- 자료구조
- Spring
Archives
- Today
- Total
시냅스
Java Annotation Processor 정리 본문
Annotation Processor
- 컴파일 단계에서 유저가 정의한 어노테이션의 소스 코드를 분석, 처리하기 위해 사용되는 Hook
- 자바 컴파일러의 플러그인 일종
- 컴파일 에러나 컴파일 경고를 만들어 냄
- 자바 컴파일러에 의해 소스코드(.java) 와 바이트코드(.class)를 내보내기도 한다.
- annotation processor를 통해서 메소드, 필드 등을 생성, 수정하거나 인터페이스만을 가지고도 구현부를 생성해줄 수 있다.
- 장정
- 런타임 전에 컴파일 단계에서 수행되기 때문에 비용이 제로에 가깝다.
- 리플렉션을 사용하지 않아 런타임 시에 예외를 발생시키지 않는다.
- Boilerplate code를 생성해준다.
- 단점
- 기존 클래스 파일에 소스(AST)를 변경할 때는 일종의 해킹이다.
프로세싱 단계
- 자바 컴파일러가 애노테이션 프로세서에 대한 정보를 알고 있는 상태에서 컴파일 수행(extends AbstractProcessor)
- 실행되지 않은 애노테이션 프로세서 수행
- 프로세서 내부에서 애노테이션이 달린 Element(변수, 메소드, 클래스 등)에 대한 처리
- 컴파일러나 애노테이션 프로세서가 실행되었는지 확인하고, 그렇지 않다면 반복 작업
- 스프링 시큐리티의 filterchain과 유사하다
'Java, Spring' 카테고리의 다른 글
Java 프로세스 동기화 process synchronization 정리 (0) | 2023.02.11 |
---|---|
Java Equals와 HashCode, == 와 차이 (0) | 2023.02.11 |
Java 가비지 컬렉션 Garbate Collection 정리 (0) | 2023.02.08 |
Java 함수형 프로그래밍 (0) | 2023.02.06 |
Spring 트랜잭션 전파 정리 (0) | 2022.09.03 |
Comments