Annotation
개요
- jdk 1.5부터 도입
- Java Code에 주석처럼 달아 의미 부여, 코드 수행 방법에 영향을 주지 않음 => 코드의 가독성 향상
- //, /* */, /** */등의 주석은 컴파일이 되면서 사라지지만 Annotation은 Runtime까지 존재하는 주석
- @표시 뒤에 어노테이션명을 붙이며, 클래스, 필드, 메소드 등 선언부에 적용
분류
Marker Anootation
- 변수가 없고, 이름으로 구분되며 추가 데이터 없이 동작
Single-value Annotation
- 하나의 값만 설정
Full Annotation
- 다중 값(멤버)를 설정
종류
Override Annotation
- 상위 클래스에서 선언된 한 메소드를 Override 할 것임을 컴파일러에게 알려준다
- Override 실패 시 컴파일러에게 에러를 발생
Deprecated Annotation
- Deprecated가 표시된 메소드가 더 이상 사용되지 말아야 한다는 걸 알려준다
- 컴파일러는 Deprecated가 사용된 메소드, 클래스, 변수를 사용할 때마다 경고를 발생한다
SuppressWarnings Annotation
- 컴파일러가 다르게 발생될 특정 경고를 억제한다
Custom Annotation
- 클래스와 같이 Annotation을 임의로 정의하여 사용한다
대표적인 어노테이션
@Override
자식 클래스에서 부모 클래스이 메소드를 '오버라이드 한다'고 명시적으로 표시
- 코드의 가독성이 향상
- 실수로 Override 하지 않았을 경우, 컴파일 할때 error 발생
@Deprecated
가급적 사용의 자제를 요구할때 사용, 컴파일 할때 경고 발생
- 개선된 메소드가 있거나, 다음 버전에 사라지니 사용을 자제하라는 경고의 의미
@SupperssWarning
- 컴파일러의 경고와 관련된 어노테이션
- 경고문을 출력하지 말라는 의미, 자바에서 주로 등장하는 deprecation과 unchecked 둘중 하나를 기술
@ResponseBody
트롤러 메소드에 @ResponseBody로 어노테이션을 사용하면, 메소드에서 리턴되는 값은 View(jsp파일)로
보내지 않고 Http Response Body 에 직접 쓰여지게 된다.(객체가 특정한 포맷형태로 리턴된다.
ex) 문자열, json, xml...)
뷰페이지를 통하지 않고 바로 출력 스트림으로 보내지는데, 내용은 자바스크립트나 다른 언어로 파싱하여 사용한다.
|