기본 콘텐츠로 건너뛰기

라벨이 @Target인 게시물 표시

[ JAVA ] @interface? Annotation??

  Annotation 이란 사전적인 의미대로 주석을 작성하는 것이고, 프로그램적으로 사용할 수 있도록 몇 가지 규칙을 적용한 것이다. 제일 흔한 활용 방식은 부가적인 정보를 제공하기 위한 것이다.   예를 들어 웹 어플리케이션에서 Controller 에 대한 설정을 하려면 해당 규칙 (Spring Framework 등을 사용한다면 그에 맞도록) 을 xml 설정 파일에 정의를 하고 프레임워크가 구동되면 그 정보를 로드해서 운영되는 것이다. 그러나 Annotation 방식을 사용하게 되면 xml 설정 파일에는 컴포넌트 스캔 정보와 같은 단순한 정보를 설정하고 나머지 부가 정보들은 해당 클래스에 Annotation으로 설정을 해 놓으면 같은 동작을 하게 된다. 좀 더 관리 포인트가 줄어들고 해당 클래스의 Annotation을 보면 어떤 역할을 담당하는지를 알 수 있기 때문에 많이 활용된다.   실제 구성된 코드에서 보면 "@" 가 붙은 것들을 볼 수 있다. "@" 는 Annotation을 의미하는 것이고, 가장 많이 볼 수 있는 것이 "@Override", "@SupressWarnings", "@Deprecated", "@Controller", "@RequestMapping", ... 등이다.   Annotation은 다음과 같이 정의를 해서 직접 만들어서 사용할 수도 있다.   @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Simple { public String defaultVal() default "OK"; public String val(); }   위의 코드는 단순한 기능을 제공하는 Annotation을 정의한 것으로 Annotation 의 값을 "val" 이라는 항목