머리말
현재 점점 더 많은 건축 설계는 Spring3.0, Struts2 및 기타 프레임 워크와 같은 주석을 사용하고 있습니다. 먼저 주석의 정의를 살펴 보겠습니다. 다음은 jdk 5 annotation @target을 사용하는 코드입니다.
@TARGET ({ElementType.Method})@retention (retentionpolicy.runtime)@inherited@documentedpublic @interface asynlog {}1. @Target 사용
java.lang.annotation.target
주석 사용 범위를 설정하는 데 사용됩니다
java.lang.annotation.elementtype
대상 열거 컬렉션을 사용하기위한 주석 스코프를 지정합니다
2. ElementType의 사용
| 가치를 얻으십시오 | 주석 범위 |
| 방법 | 방법에 사용할 수 있습니다 |
| 유형 | 클래스 또는 인터페이스에서 사용할 수 있습니다 |
| annotation_type | 주석 유형 (@interface에서 수정 된 유형)에서 사용할 수 있습니다. |
| 건설자 | 시공 방법에 사용할 수 있습니다 |
| 필드 | 도메인에서 사용할 수 있습니다 |
| local_variable | 로컬 변수에 사용할 수 있습니다 |
| 패키지 | Java 파일의 패키지 정보를 기록하는 데 사용됩니다 |
| 매개 변수 | 매개 변수에서 사용할 수 있습니다 |
하이라이트는 다음과 같습니다. ElementType. 패키지. 일반 클래스에서는 사용되지 않고 고정 파일 패키지 info.java에서 사용됩니다. 여기서 명명은 "패키지 인포"여야한다는 점을 강조해야합니다. package-info.java는 법적 클래스가 아니기 때문에 Eclipse를 사용하여 클래스를 만들면 불법이라는 메시지가 표시되므로 파일 생성 방식으로 Package-Info.java를 작성해야합니다.
예를 들어, 범위 패키지는 다음을 정의하는 데 사용될 수 있습니다.
@TARGET ({ElementType.package, elementType.Method})@retention (retentionpolicy.runtime)@inherited@documentedpublic @interface asynlog {}그런 다음 컨텐츠와 함께 파일을 작성하십시오.
코드 사본은 다음과 같습니다.
@asynlog
패키지 org.my.commons.logs.annotation;
기조 연설 : 주석은 ElementType에서 설정 한 범위 내에서만 사용할 수 있으며, 그렇지 않으면 오류가 컴파일됩니다. 예를 들어 : 범위에는 elementType.Method 만 포함되어 있으므로 주석이 클래스 메소드에서만 사용할 수 있으며 예외는 사용 범위 외부에서 컴파일됩니다.