어노테이션(Annotation)
-
자바 어노테이션(Java Annotation)은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터(객체 생성 위치)의 일종이다.
-
보통 @ 기호를 앞에 붙여서 사용한다.
-
JDK 1.5 버전 이상에서 사용 가능하다. 자바 애너테이션은 클래스(Class) 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한다.
-
어노테이션은 주석이라는 의미를 가진다.
어노테이션의 용도
-
컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공
-
소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
-
실행시(런타임시)특정 기능을 실행하도록 정보를 제공

위의 그림은 과거의 파일 관리 방법이었다.
자바 코드와 관련 설정 파일을 따로 저장하고, "ver @.@"로 구분하여 관리했다.
위와 같이 관리를 하는데 두 가지의 어려움이 있었다.
- 사람들이 자바 코드는 변경하는데 설정 파일을 업데이트 하지 않는 어려움
- 설정과 코드가 분리되어있어, 개발에 대한 어려움
그래서 다음과 같은 관리방법을 채택하게 되었다.

이렇게 어노테이션을 통해 하나의 파일에서 코드와 설정을 관리할 수가 있게 되었다.
어노테이션의 종류
- 표준(내장) 어노테이션 : 자바가 기본적으로 제공해주는 어노테이션
- 메타 어노테이션 : 어노테이션을 위한 어노테이션
- 사용자정의 어노테이션 : 사용자가 직접 정의하는 어노테이션
표준 어노테이션
표준 어노테이션(메타 어노테이션 제외)의 종류는 다음과 같다.
- @Override
- @Deprecated
- @SuppressWarnings
@Deprecated
해당 메서드(Method)가 더 이상 사용되지 않음을 표시합니다.
만약 사용할 경우 컴파일 경고를 발생 키십니다.
@SuppressWarnings
선언한 곳의 컴파일 경고를 무시하도록 합니다.
@SafeVarargs
Java7 부터 지원하며, 제너릭 같은 가변인자의 매개변수를 사용할 때의 경고를 무시합니다.
@FunctionalInterface
Java8 부터 지원하며, 함수형 인터페이스를 지정하는 어노테이션입니다.
만약 메서드가 존재하지 않거나, 1개 이상의 메서드(default 메서드 제외)가 존재할 경우 컴파일 오류를 발생 시킵니다.
컨트롤러 클래스에 @Controller 어노테이션을 작성합니다. 해당 어노테이션이 적용된 클래스는 "Controller"임을 나타나고, bean으로 등록되며 해당 클래스가 Controller로 사용됨을 Spring Framework에 알림
스프링에서 자바 파일을 만들고 @Controller를 설정해야 사용할 수 있음
@Controller 어노테이션이 붙은 클래스는 Spring MVC에서 Controller로 인식
함수형 인터페이스 선언
반환 값을 특정 값으로 return StringConverter