어노테이션(Annotation)이란?

권 해·2023년 1월 7일
0

Spring

목록 보기
5/9

MyMiChef 프로젝트를 진행하는 도중, 또 당연하다고 생각하고 지나칠 뻔한 것이 있다.
바로 어노테이션이다.
정말 많이 쓰는데도 이게 정확히 무엇이고, 어떻게 동작하는 지도 모르고 사용하고 있었다. 이전에 나는 어노테이션에 대해
"이거 넣으면 다양한 기능을 해주니까 편하다" 라는 생각만 가지고 무작정 사용했다. 그래서 이번에는 어노테이션에 대해 알아보려 한다.

어노테이션은 사전적 의미로는 주석이라는 뜻이다. 자바에서 사용될 때의 어노테이션은 코드 사이에 주석처럼 쓰여서 특별한 의미, 기능을 수행하도록 하는 기술이다. 즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터(meta data: 데이터를 위한 데이터)라고 볼 수 있다.

어노테이션의 용도는 다음과 같다.

  • 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공
  • 소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
  • 실행시(런타임시)특정 기능을 실행하도록 정보를 제공

간단히 요약하면

  • 어노테이션은 작성한 코드에 대해 추가적인 정보를 제공한다
  • 어노테이션을 통해 컴파일 타임 혹은 런타임에 해당 코드에 필요한 추가적인 처리가 가능하다.

어노테이션은 스프링이나 Lombok 라이브러리에서 제공하기도 하고, 사용자정의로 직접 만들수도 있다.
어노테이션은 주석이란 뜻이지만, 주석을 읽는이가 사람이 아닌 컴파일러이다.
그리고 실제로 동작하는 코드이다. 실제로 @Setter 어노테이션의 구현부를 보면

내용을 정확히 이해하진 못했지만 아무튼 구현이 되어있다.
추가적인 정보 제공 및, 처리 기능은 클래스 내부에서도 충분히 구현할 수 있다.
하지만 어노테이션을 사용하면 추가적으로 필요한 처리를 비즈니스 로직에 영향을 주지 않는 다는 점에서 장점이 있다.

사실, 어노테이션을 더 깊게 파려고 하면 정말 많은 내용들이 있다.
일단은 어노테이션이 어떤 것인지 이해하는 것부터 시작해서, 앞으로 스프링에 대해 더 공부하면서 깊이 있게 알아볼 예정이다.

0개의 댓글