Spring 사용자 정의 주석 간단하게 4 단계 사용
4361 단어 Spring
1: 설정 에서 op 프로 그래 밍 열기
class 가 가리 키 는 것 은 절단면 해석 류 아래 에 언급 될 것 입 니 다.(spring - boot 에 서 는 어떠한 설정 도 필요 없 이 op 을 직접 사용 할 수 있 습 니 다)
2: 사용자 정의 주석 작성
package com.thc.tenantcenter.aspect;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface LogAnnotation {
String desc() default " ";
}
3: 자신의 절단면 실현 클래스 를 작성 하 는 것 은 앞에서 말 한 bean 이 가리 키 는 경로 입 니 다.
package com.thc.tenantcenter.aspect;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Aspect //
@Component //
public class LogAspect {
// ,
@AfterReturning("within(com.thc.tenantcenter..*) && @annotation(rl)")
public void addLogSuccess(JoinPoint jp, LogAnnotation rl){
Object[] parames = jp.getArgs();//
for (int i = 0; i < parames.length; i++) {
System.out.println(parames[i]);
}
System.out.println(jp.getSignature().getName());
String className = jp.getTarget().getClass().toString();//
System.out.println("className:" + className);
className = className.substring(className.indexOf("com"));
String signature = jp.getSignature().toString();//
System.out.println("signature:" + signature);
}
}
4: com. thc. tenantcenter 패키지 및 하위 패키지 방법 에 자신 이 정의 한 주 해 를 추가 합 니 다.
@LogAnnotation(desc = " ID ")
@Override
public AdminLog getAdminLogById(Integer id) {
return adminLogMapper.getAdminLogById(id);
}
실행 결 과 는:
1 getAdminLogById className:class com.thc.tenantcenter.biz.adminlog.service.impl.AdminLogServiceImpl signature:AdminLog com.thc.tenantcenter.biz.adminlog.service.impl.AdminLogServiceImpl.getAdminLogById(Integer)
네 가지 원 주해
JDK 5.0 버 전 은 자바. lang. annotation 에서 네 가지 원 주 해 를 제공 합 니 다. 다른 주 해 를 전문 적 으로 설명 합 니 다. @ Documented – 자바 문서 에 주석 정 보 를 추가 할 지 여부 @ Retention – 이 주해 의 생명주기 @ Target – 주 해 를 어디 에 사용 할 지 정의 합 니 다 @ Inherited – 하위 클래스 가 이 주 해 를 계승 할 수 있 는 지 여부
@ Retention 주 해 는 이 주해 의 생명 주 기 를 정의 합 니 다. 어떤 단계 에서 버 립 니까? Retention Policy. SOURCE – 컴 파일 단계 에서 버 립 니 다.이 주석 들 은 컴 파일 이 끝 난 후에 더 이상 의미 가 없 기 때문에 바이트 코드 를 쓰 지 않 습 니 다. @Override, @ Suppress Warnings 는 모두 이런 주해 에 속한다.
RetentionPolicy. CLASS – 클래스 로 딩 할 때 버 리 고 바이트 파일 처리 에 유용 합 니 다.주 해 는 기본적으로 이런 방식 을 사용한다.
RetentionPolicy. RUNTIME – 항상 버 리 지 않 고 실행 기간 에 도 이 주 해 를 유지 하기 때문에 반사 메커니즘 으로 이 주해 의 정 보 를 읽 을 수 있 습 니 다.사용자 정의 주 해 는 보통 이런 방식 을 사용한다.
@ Target – 이 주 해 를 어디 에 사용 하 는 지 표시 합 니 다.명확 하 게 밝 히 지 않 으 면 이 주 해 는 어디 에 나 놓 을 수 있다.속성의 주 해 는 호 환 된다.
ElementType. TYPE: 클래스, 인터페이스 또는 enum 설명 에 사용
ElementType. FIELD: 실례 변 수 를 설명 하 는 데 사용
ElementType.METHOD
ElementType.PARAMETER
ElementType.CONSTRUCTOR
ElementType.LOCAL_VARIABLE
ElementType.ANNOTATION_TYPE 다른 주석
ElementType. PACKAGE 는 자바 파일 의 패키지 정 보 를 기록 하 는 데 사 용 됩 니 다.
그렇다면 주해 의 내 부 는 도대체 어떻게 정 의 된 것 일 까?Annotations 는 기본 형식, String 및 매 거 진 형식 만 지원 합 니 다.설명 에 있 는 모든 속성 은 방법 으로 정의 되 고 기본 값 을 제공 할 수 있 습 니 다.
원본 주소:https://www.cnblogs.com/zhuxiansheng/p/7805552.html https://juejin.im/post/5d1b2312f265da1bc23f913e?utm_source=gold_browser_extension
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.