저는 서비스 메소드가 호출되기 전이나 실행 된 직후에 런타임에 실행할 수있는 주석을 작성하려고합니다.Java 주석은 언제 실행됩니까?
런타임 또는 컴파일 타임에 실행되는지 알 수 없습니다.
저는 서비스 메소드가 호출되기 전이나 실행 된 직후에 런타임에 실행할 수있는 주석을 작성하려고합니다.Java 주석은 언제 실행됩니까?
런타임 또는 컴파일 타임에 실행되는지 알 수 없습니다.
주석이 실행되지 않습니다. 다양한 도구로 읽는 메모 또는 표식입니다. 일부는 컴파일러에서 읽습니다 (예 : @Override
). 다른 것들은 클래스 파일에 내장되어 있으며 런타임에 Hibernate와 같은 툴에 의해 읽혀진다. 그러나 그들은 아무 것도하지 않습니다.
대신 assertions을 생각해 볼 수 있습니다. 이전 및 이후 조건의 유효성을 검사하는 데 사용할 수 있습니다.
주석은 코드에 영향을주지 않으며 컴파일러 나 다른 도구로 평가할 정보를 제공하기 위해 여기에 있습니다.
주석, 그들 가운데 용도의 번호를 가지고 : 컴파일러에 대한
정보 - 주석이 오류를 감지 또는 경고를 억제하기 위해 컴파일러에 의해 사용할 수 있습니다.
컴파일러 시간 및 배포 시간 처리 - 소프트웨어 도구는 주석 정보를 처리하여 코드, XML 파일 등을 생성 할 수 있습니다.
런타임 처리 - 일부 주석은 런타임에 검사 할 수 있습니다.
이 부분은 page을 참조하십시오.
설정 한 보존 정책에 따라 실제로 두 환경에서 모두 읽을 수 있습니다.
실제로 주석을 정의 할 때 소스 코드 (SOURCE), 클래스 파일 (CLASS) 또는 런타임 (RUNTIME) 중 어노테이션을 사용할 수 있는지를 정의하는 매개 변수 @Retention
을 지정해야합니다.
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {}
어노테이션은 그냥 마커입니다. 그들은 아무 것도하지 않고 실행합니다.
서로 다른 보존 정책을 지정할 수 있습니다
더 : http://www.java2s.com/Tutorial/Java/0020__Language/SpecifyingaRetentionPolicy.htm이
주석이 소스 코드에서만 마커입니다. IDE, 컴파일러 또는 주석 프로세서와 같은 도구에서 사용됩니다.
어노테이션이 소스, 클래스 또는 런타임에서 평가되어야하는 경우 @Retention으로 정의 할 수 있습니다.
소유 한 주석을 정의하고 싶은 경우에만 주석이 수행해야 할 지식이 있으므로 주석 프로세서도 작성해야합니다. (하지만 간단하지는 않습니다 - 어쩌면)