Java Annotation 기초(Basic)

2012. 12. 24. 17:52 - 에릭투스

자바 어노테이션...

스프링 권한관리 처리할때 어노테이션을 사용했으나, 스프링에서 제공하는 줄 알았다는...;;

그만큼 내가 갈길이 멈..ㅠㅠ


자바에서 제공하는 어노테이션이며, 굉장히 유용한 기술이다..!!


1.

먼저 사용할 Annotation설정을 한다.

@Target은 사용할 어노테이션의 타입 - 즉, Method에 사용하겠다는 의미이며,

@Retention의 경우 아직 이해는 잘 안가지만, 런타임시에 사용되며, class파일에 어노테이션 정보가 남도록 지정하겠다는 의미라고 한다. ㅎㅎ


package annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Usecase {
 public int id();
 public String description() default "no description";
}



2. 

실제 사용할 Class의 메소드에 어노테이션 지정.


package annotation;

import java.util.List;

public class PasswordUtils {
         @Usecase(id = 47, description = "passwords must contain at least one numeric")
	 public boolean validatePassword(String password) {
	  return (password.matches("\\w*\\d\\w*"));
	 }
	 
	 @Usecase(id = 48)
	 public String encryptPassword(String password) {
	  return new StringBuilder(password).reverse().toString();
	 }
	 
	 @Usecase(id = 49, description = "New passwords can't equal perviously used ones")
	 public boolean checkForNewPassword(List prevPasswords, String password) {
	  return !prevPasswords.contains(password);
	 }
}

3.

이렇게 설정한 후 실제 어노테이션 설정한 정보를 가져오기!!!!



package annotation;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class UseCaseTracker {
	 public static void printUsecaseAnnotations(Class cl){
		 Method[] methods = cl.getDeclaredMethods();
		 for (Method m : cl.getDeclaredMethods()) {
			   Usecase uc = m.getAnnotation(Usecase.class);
				System.out.println("annotation : "+uc);
				System.out.println("anootation Usecase id : "+uc.id()+" , Usecase description : "+uc.description());
				System.out.println();
		 }
	 }
		 
       public static void main(String[] args) {
	  printUsecaseAnnotations(PasswordUtils.class);
      }
}



'자바 기본 공부 > 기초 이론' 카테고리의 다른 글

Effective 자바 - 개초보가 본디..  (1) 2013.04.01
Java Thread Pool 예제  (0) 2013.03.25
OracleDataSource를 사용한 JDBC 기초이론  (0) 2009.06.23
자바 JDBC 기초  (0) 2009.06.23
Thread에 대해서 집중~~~  (0) 2009.06.23

다른 카테고리의 글 목록

자바 기본 공부/기초 이론 카테고리의 포스트를 톺아봅니다