어노테이션


 어노테이션 용도
   ▶컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공
   ▶소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공
   ▶실행 시 특정 기능을 실행하도록 정보를 제공


public @interface AnnotationName {
	String value();		//<-------- 기본 엘리먼트
	int elementName() default 0;
}
엘리먼트의 이름 뒤에는 메소드 작성처럼 ( )를 붙여야 함. 

● 어노테이션 적용 대상 


● 어노테이션 유지 정책 


● 런타임 시 어노테이션 정보 사용


● 샘플 소스

MemberAnnotation.java

@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MemberAnnotation {
	String id() default "GUEST";
	String name() default "게스트";
}
MemberServive.java
public class MemberService {
	
	@MemberAnnotation
	public void memberInfoPrint01(){
		System.out.println("----- memberInfoPrint01 -----");
	}
	
	@MemberAnnotation(id="TEST", name="테스트")
	public void memberInfoPrint02(){
		System.out.println("----- memberInfoPrint02 -----");
	}
	
	@MemberAnnotation(id="ADMIN", name="관리자")
	public void memberInfoPrint03(){
		System.out.println("----- memberInfoPrint03 -----");
	}
}
AnnotationExam01.java
public class AnnotationExam01 {

	public static void main(String[] args) {
		Method[] declareMethods = MemberService.class.getDeclaredMethods();
		
		try{
			for(Method method : declareMethods){
				if(method.isAnnotationPresent(MemberAnnotation.class)){
					System.out.println("MemberAnnotation 적용");
					
					MemberAnnotation memberAnnotation = method.getAnnotation(MemberAnnotation.class);
					
					String methodName = method.getName();

					System.out.println("[START] ----- " + methodName + " ----- [START]");
					System.out.println("id={" + memberAnnotation.id() + "}, name={" + memberAnnotation.name() + "}");
					
					method.invoke(new MemberService());
										
					System.out.println("[END] ----- " + methodName + " ----- [END]\n");
				}else{
					System.out.println("MemberAnnotation 미적용");
				}
			}
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
}
결과
MemberAnnotation 적용
[START] ----- memberInfoPrint02 ----- [START]
id={TEST}, name={테스트}
----- memberInfoPrint02 -----
[END] ----- memberInfoPrint02 ----- [END]

MemberAnnotation 적용
[START] ----- memberInfoPrint03 ----- [START]
id={ADMIN}, name={관리자}
----- memberInfoPrint03 -----
[END] ----- memberInfoPrint03 ----- [END]

MemberAnnotation 적용
[START] ----- memberInfoPrint01 ----- [START]
id={GUEST}, name={게스트}
----- memberInfoPrint01 -----
[END] ----- memberInfoPrint01 ----- [END]

이 포스트는 '이것이 자바다(신용권)'를 참고하여 작성한 포스트 입니다.


+ Recent posts