어노테이션
● 어노테이션 용도
▶컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공
▶소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공
▶실행 시 특정 기능을 실행하도록 정보를 제공
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]
이 포스트는 '이것이 자바다(신용권)'를 참고하여 작성한 포스트 입니다.
'프로그램 > Java & Jsp' 카테고리의 다른 글
[MAVEN] Maven 빌드 시 xml(매퍼) 파일 누락되는 문제 (0) | 2022.10.04 |
---|---|
[JAVA] Thread-2 (join) (0) | 2017.03.12 |
[JAVA] Thread-1 (Thread, Runnable) (0) | 2017.03.12 |
[JAVA] 열거 타입 (Enumeration Type) (0) | 2017.03.12 |
SHA-512 (Java, JavaScript 소스) (0) | 2013.02.07 |