Annotation
Annotation 이란?
Annotation은 자바 Java5에서 새롭게 추가된 문법이다. 사전에서 찾아보면 "주석"이라는 의미를 가지고 있으며, 뜻 그대로 자바 코드에 주석처럼 달아 특별한 의미를 부여한다. 이 의미는 컴파일 타임 혹은 런타임에 해석된다.
자바 혹은 Spring이 제공해주는 것들도 있고, 개발자가 직접 만들 수도 있다.
메타 데이터(실제 데이터가 아닌 데이터를 위한 데이터) 라고도 불리는데, 이는 프로그램 코드의 일부가 아닌 프로그램에게 추가적인 정보를 제공해주는 역할을 수행하기 때문이다.
클래스, 메소드, 변수등 모든 요소에 선언이 가능하다.
Annotation 등장배경?
프로그램의 규모가 날이 갈수록 방대해지고, 복잡해지면서 XML이 가지는 설정정보의 양이 많아짐에 따라 가독성이 떨어지고, 변경사항이 있을때의 유지보수가 어려워졌다. 그래서 이를 시스템 전반에 영향을 주는 메타데이터와 그렇지 않은 것들로 나누어 관리하기 쉽도록 하기위해 등장하였다.
시스템 전반에 영향을 주는 메타데이터는 XML로 설정하여 소스코드로부터 독립적으로 분리하여 관리하고,
그렇지 않은 부분들을 Annotation 기반으로 설정하여 개발의 생산성을 향상시킬 수 있으며, 직관적으로 코드를 파악할 수 있게 도와준다.
ex) @Component는 어노테이션이 적용된 클래스를 Spring(IOC) container에 bean을 등록하는 역할을 수행한다. 이 역할을 어노테이션을 사용하지 않고 구현하려면 XML 파일에 <Bean id=.... /> 와 같은 형태로 등록해야 하는데, 등록해야하는 bean이 많아지면 xml 파일의 크기도 커지고 유지보수하기에도 어려움이 생기므로 어노테이션을 사용하여 중복을 줄여 가독성과 유지보수에 도움을 준다.
Annotation 용도?
- 컴파일러에게 정보를 제공하기 위한 용도
Ex. @Override
- 런타임에 리플렉션을 이용해서 특수한 기능을 구현하기 위한 용도
<쉬운말 : 프로그램을 실행하고 있을 때, 특정한 기능을 실행하도록 해줌>
Ex. @Controller,@Service
자바 리플렉션: 다른 언어에는 존재하지 않는 특별한 기능. 컴파일 시간이 아니라 실행시간에 동적으로 특정 클래스 의 정보를 객체를 통해 분석 및 추출해내는 프로그래밍 기법
- 컴파일 과정에 어노테이션 정보로부터 코드를 생성하기 위한 용도
References
Spring - @Bean 어노테이션과 @Component 어노테이션(DI) - 2
@Component, @Bean 프로그램이 거대해 짐에 따라 XML 을 이용하여 IOC Container 를 설정하는 것이 점점 어려워졌고 때문에 Annotation(@) 이란 것이 등장했다(이하 어노테이션). 어노테이션은 코드에 메타데
galid1.tistory.com
[Spring] 스프링 어노테이션(@, Annotation) 종류
어노테이션(@, Annotation)이란? Annotation은 Java5부터 새롭게 추가된 문법요소이다. 사전적으로는 "주석"이라는 의미를 가지고 있으며, 의미대로 자바 코드에 주석처럼 달아 특수한 의미를 부여해준
helloworld-88.tistory.com
# Spring Annotation(어노테이션)이란?
# Annotation이란? - @를 이용한 주석, 자바코드에 주석을 달아 특별한 의미를 부여한 것 (참고로 클래스, 메소드, 변수 등 모든 요소에 선언이 가능) - 메타데이터(실제데이터가 아
palyoung.tistory.com