Annotation은 중국어로 Annotation으로 번역되는데, 이는 프로그램 자체의 로직 외에 추가 데이터 정보를 제공한다는 의미입니다. 주석은 주석이 달린 코드와 직접적으로 상호 작용할 수 없지만 다른 구성 요소는 이 정보를 사용할 수 있습니다.
주석 정보는 class 파일로 컴파일하거나 JVM(Java Virtual Machine)에 보관하여 런타임 시 얻을 수 있습니다. 주석 자체에 주석을 추가할 수도 있습니다.
클래스, 메소드, 변수, 매개변수 및 패키지를 추가할 수 있습니다. 주석을 추가할 수 있습니다.
@Override 오버로딩상위 클래스의 @Deprecated 메서드나 유형은 더 이상 권장되지 않습니다.
@SuppressWarnings 컴파일 방지. - 시간 경고 메시지. String의 배열을 매개변수로 받아야 합니다. 사용 가능한 매개변수는 다음과 같습니다:
선택 해제됨
path
serial
마지막으로
fallthrough
@ Retention
은 저장되는 Annotation의수명주기를 결정하며, Enum 객체 RetentionPolicy를 매개변수로 받아야 합니다.
public enum RetentionPolicy { /** * Annotations are to be discarded by the compiler. */ SOURCE, /** * Annotations are to be recorded in the class file by the compiler * but need not be retained by the VM at run time. This is the default * behavior. */ CLASS, /** * Annotations are to be recorded in the class file by the compiler and * retained by the VM at run time, so they may be read reflectively. * * @see java.lang.reflect.AnnotatedElement */ RUNTIME }
@Documented Documented
@Target
은 Annotation이 수정할 수 있는 범위를 나타내며 Enum 객체를 받습니다. EnumType 배열을 매개변수로 사용합니다.public enum ElementType { /** Class, interface (including annotation type), or enum declaration */ TYPE, /** Field declaration (includes enum constants) */ FIELD, /** Method declaration */ METHOD, /** Parameter declaration */ PARAMETER, /** Constructor declaration */ CONSTRUCTOR, /** Local variable declaration */ LOCAL_VARIABLE, /** Annotation type declaration */ ANNOTATION_TYPE, /** Package declaration */ PACKAGE }
@Inherited
이 주석은 주석이 달린 클래스의 하위 클래스에 영향을 미칠 수 있습니다. 맞춤형 주석JSE5.0 이후에는 Annotation을 맞춤설정할 수 있습니다. 다음은 간단한 예입니다.@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MethodAnnotation { }다음 Person 객체는 사용자 정의 MethodAnnotation을 사용합니다.
public class Person { public void eat() { System.out.println("eating"); } @MethodAnnotation public void walk() { System.out.print("walking"); } }Reflection을 통해 Annotation 정보를 얻을 수 있습니다.
Class<Person> personClass = Person.class; Method[] methods = personClass.getMethods(); for(Method method : methods){ if (method.isAnnotationPresent(MethodAnnotation.class)){ method.invoke(personClass.newInstance()); } }출력:
walking사용자 정의 주석에 메소드를 추가할 수도 있습니다.
@Target(ElementType.TYPE) public @interface personAnnotation { int id() default 1; String name() default "bowen"; }personAnnotation의 사용법은 다음과 같습니다.
@personAnnotation(id = 8, name = "john") public class Person { public void eat() { System.out.println("eating"); } @MethodAnnotation public void walk() { System.out.print("walking"); } }주석 처리 방법 Java 소스 코드가 컴파일되면 컴파일러의 플러그인 주석 프로세서가 이러한 주석을 처리합니다. 프로세서는 보고서 정보를 생성하거나 추가 Java 소스 파일 또는 리소스를 생성할 수 있습니다. 주석 자체가 RententionPolicy 런타임 클래스와 함께 추가되면 Java 컴파일러는 주석의 메타데이터를 클래스 파일에 저장합니다. 그러면 JVM(Java Virtual Machine) 또는 기타 프로그램이 이 메타데이터를 찾아 그에 따라 처리할 수 있습니다. 물론 주석을 처리할 수 있는 주석 프로세서 외에도 리플렉션을 사용하여 주석을 직접 처리할 수도 있습니다. Java SE 5에는 AnnotatedElement라는
인터페이스가 있습니다. Java의 반사 객체 클래스인 Class, Constructor, Field, Method 및 Package는 모두 이 인터페이스를 구현합니다. 이 인터페이스는 현재 JVM(Java Virtual Machine)에서 실행 중인 주석이 달린 프로그램 요소를 나타내는 데 사용됩니다. 이 인터페이스를 통해 리플렉션을 사용하여 주석을 읽을 수 있습니다. AnnotatedElement 인터페이스는 RUNTIME으로 표시된 주석에 액세스할 수 있습니다. 해당 메소드는 getAnnotation, getAnnotations 및 isAnnotationPresent입니다. Annotation 유형은 클래스와 마찬가지로 바이너리로 컴파일되고 저장되므로 이러한 메소드에서 반환된 Annotation은 일반 Java 객체처럼 쿼리할 수 있습니다. Annotation의 광범위한 사용
Annotation은 다양한@AfterClass: 테스트 클래스의 모든 테스트 메소드가 실행된 후 호출되며 한 번만 실행됩니다(표시된 메소드는 정적이어야 함)
Spring은 구성지옥이라 불리며 Annotation이 많습니다.
@Service 서비스 클래스에 주석 추가
@Repository DAO 클래스에 주석 추가
@Component 컴포넌트 클래스에 주석 달기
@Autowired Let Spring이 자동으로 Bean을 어셈블합니다
@Transactional 구성 항목
@Scope는 객체 생존 범위를 구성합니다
@Controller는 컨트롤러 클래스에 주석을 답니다
@RequestMapping URL 경로 매핑
@PathVariable은 메소드 매개변수를 경로에 매핑합니다.
@RequestParam은 요청 매개변수를 메소드 변수에 바인딩합니다.
@ModelAttribute는 model
@SessionAttributes는 세션 속성
으로 설정됩니다. @Entity는 Entity Bean
@Table은 엔터티 클래스를 데이터베이스의 테이블에 매핑합니다
@Column은 열을 매핑합니다
@Id 매핑 ID
@GeneratedValue 이 필드는 자동으로 증가합니다
@버전 제어 또는 동시성 제어
@OrderBy Collation
@Lob Large Object Annotation
Hibernate 및 기타 주석 관련 Union의 설명과 을 상속받은 의 주석이 있으므로 여기에 나열하는 것은 의미가 없습니다.
JSR 303 – Bean Validation은 데이터 검증 사양으로, Java Bean 검증은 주로 Java Annotation을 통해 구현됩니다.
@Null주석: 의 요소는 null이어야 합니다.
@NotNull 주석이 추가됨 요소는 null이 아니어야 합니다
@AssertTrue주석이 있는 요소는 true여야 합니다@AssertFalse주석이 있는 요소는 false@Min(value)이어야 합니다.주석이 있는 요소는 값이 다음보다 커야 합니다. 또는 지정된 최소값과 같음
@Max(value) 주석이 달린 요소는 숫자여야 하며 해당 값은 지정된 최대값보다 작거나 같아야 합니다.
@DecimalMin(value)주석이 달린 요소는 숫자여야 하며 해당 값은 지정된 최소값보다 크거나 같아야 합니다
@DecimalMax( 값) 주석이 달린 요소는 다음과 같아야 합니다. 값이 지정된 최대값보다 작거나 같아야 하는 숫자입니다.
@Size(max, min) 주석이 달린 요소의 크기는 다음과 같아야 합니다. 지정된 범위 내
@Digits(정수, 분수) 주석이 달린 요소는 숫자여야 하며 해당 값은 허용 범위 내에 있어야 합니다
@Past 주석이 달린 요소는 과거 날짜여야 합니다
@Future로 주석이 달린 요소는 미래의 날짜여야 합니다
@Pattern(value)으로 주석이 달린 요소는 지정된 정규식
을 준수해야 합니다. 실제로 주석을 사용하는 프레임워크나 라이브러리가 많기 때문에 여기에 하나씩 나열하지는 않겠습니다. 모두가 Java의 주석에 대해 자세히 알아볼 수 있기를 바랍니다.
위 내용은 Java Annotation 기능에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!