1. 어노테이션을 사용하는 이유 (효과) 는 무엇일까?

<aside> ✅ 어노테이션이란? 제가 찾은 정의로는 메타데이터는 소스 코드에 직접적인 영향을 미치지 않으면서 컴파일러, 개발 도구, 런타임 환경 등에 유용한 정보를 제공할 수 있습니다.

그렇다면 메타데이터에 대한 내용이 잘 이해되지 않아서 무엇일까 찾아보았습니다. 메타데이터는 데이터에 대한 데이터 적혀있었습니다. 예시로 사진의 촬영날짜, 시간, 위치등으로 정의가 됩니다!!

그렇다면 제 생각은 어노테이션은 코드들 메타데이터를 정의해, 간단하게 제어하고 편리하게 사용한다라고 생각합니다. 저는 객체지향적인 동일한 내용으로 재사용성과 확장성을 향상시킬수 있다 생각합니다.

</aside>

2.나만의 어노테이션은 어떻게 만들 수 있을까?

2-1. 직접 구현한 커스텀 어노테이션

커스텀 어노테이션을 어떤 방식으로 구현하면 좋을지 생각하는 와중에 컨트롤러(메서드)에 요청이 들어오면 현재 시간,어떤 메서드에 접근했는지에 대한 로그에 찍히는 어노테이션을 생각해봤습니다.

바로 구현해야지!!

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomTimeStamp {
}

Reflection이란? 컴파일 시간이 아닌 실행 시간에 동적으로 특정 클래스의 정보를 추출할 수 있는 프로그래밍 기법이라 할 수 있다.