자바 어노테이션...
스프링 권한관리 처리할때 어노테이션을 사용했으나, 스프링에서 제공하는 줄 알았다는...;;
그만큼 내가 갈길이 멈..ㅠㅠ
자바에서 제공하는 어노테이션이며, 굉장히 유용한 기술이다..!!
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 |