https://github.com/MungDon/planner-project/blob/master/src/main/java/com/planner/util/UserDataResolver.java

오늘은 프로젝트 진행중에 반복되는 유저정보 가져오는 코드를 줄이고 편리하게 사용하기 위해

커스텀 어노테이션을 만들어 보려합니다.

커스텀 어노테이션을 알아보기전에! 어노테이션이란 무엇인가 부터 알아보겠습니다!

어노테이션이란?

<aside> 👉 사전적 의미로는 주석이라는의미, 하지만 자바에서 어노테이션은 코드 사이에 특별한 의미, 기능을 수행하도록 하는 기술입니다.

프로그램 코드의 일부가 아닌 프로그램에 관한 데이터를 제공하고, 코드에 정보를 추가하는 정형화 된 방법이기도 합니다.

</aside>

어노테이션의 용도

<aside> 👉 컴파일러에게 코드작성 문법에러를 체크하도록 정보를 제공합니다.

소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공합니다.

실행 시(runtime) 특정 기능을 실행 하도록 정보를 제공합니다.

</aside>

어노테이션을 사용하는 순서

  1. 어노테이션을 정의합니다.
  2. 클래스에 어노테이션을 배치합니다.
  3. 코드가 실행되는 중에 Reflection을 이용하여 추가 정보를 획득하여 기능을 실시 합니다.

Reflection 이란?

<aside> 👉 프로그램이 실행 중에 자신의 구조와 동작을 검사하고, 조사하고, 수정하는것을 의미합니다.

프로그래머가 데이터를 보여주고, 다른 포맷의 데이터를 처리, 통신을 위해 직렬화(serialization)를 수행하고, Bundling(번들링)을 하기 위해 일반 소프트웨어 라이브러리를 만들도록 도와줍니다.

객체 지향 프로그래밍 언어에서

</aside>

<aside> 👉 Annotation 자체는 아무런 동작을 가지지 않는 단순한표식입니다 하지만 Reflection을 이용하면 Annotation의 적용 여부와 엘리먼트 값을 읽고 처리가 가능해집니다.

Reflection을 이용하면 Annotation 지정만으로도 원하는 클래스를 주입할 수 있습니다.

</aside>