springboot 의 JoinPoint 의 getSignature 방법 에 대해 말씀 드 리 겠 습 니 다.
4238 단어 springbootJoinPointgetSignature
springboot 을 사용 하여 op 을 쓸 때 JoinPoint 클래스 가 있 습 니 다.프 록 시 클래스 와 피 프 록 시 클래스 의 정 보 를 얻 을 수 있 습 니 다.
이 글 은 JoinPoint 의 getSignature 방법 이 어떤 형식 으로 되 돌아 오 는 지 기록 합 니 다.
잔말 말고 코드 붙 여.
package org.aspectj.lang;
public interface Signature {
String toString();
String toShortString();
String toLongString();
String getName();
int getModifiers();
Class getDeclaringType();
String getDeclaringTypeName();
}
출력 을 출력 합 니 다.getString 은 테스트 클래스 의 방법 명 이 고 TestController 는 클래스 이름 입 니 다.
joinPoint.getSignature().toString():String com.fast.web.controller.TestController.getString()
joinPoint.getSignature().toShortString():TestController.getString()
joinPoint.getSignature().toLongString():public java.lang.String com.fast.web.controller.TestController.getString()
joinPoint.getSignature().getName():getString
joinPoint.getSignature().getModifiers():1
joinPoint.getSignature().getDeclaringType():class com.fast.web.controller.TestController
joinPoint.getSignature().getDeclaringTypeName():com.fast.web.controller.TestController
콜론 앞 은 사용 하 는 방법 이 고 뒤 는 이번 테스트 출력 결과 입 니 다.테스트 된 클래스 첨부:
package com.fast.web.controller;
import com.fast.framework.dao.TestDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Autowired
private TestDao testDao;
@RequestMapping("/test")
public String getString() {
int i = testDao.selectBase();
return String.valueOf(i);
}
}
springboot 주해 식 AOP 는 JoinPoint 를 통 해 인 자 를 가 져 옵 니 다.이전 개발 시 절 점 주해 의 매개 변수 값 을 가 져 와 기록 해 야 합 니 다.
절단면 주석:
@Aspect C 표 지 는 용기 에서 읽 을 수 있 는 절단면 으로 클래스 에 작용 합 니 다.
@Pointcut C(접점):알림 이 있 는 연결 점 입 니 다.
@Before C 전치
@AfterThrowing C 이상 던 지기
@After C 백업
@AfterReturning C 후 강화,실행 순 서 는@After 이후 입 니 다.
@Around C 서 라운드
1.관련 maven 가방
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.인터페이스 사용자 정의
import java.lang.annotation.*;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Action {
String value() default "list";
}
3.단면 류 정의
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@Aspect
@Component
public class ActAspect {
@AfterReturning("@annotation( .Action)")
public void afterReturning(JoinPoint point){
//
String methodName = point.getSignature().getName();
//
MethodSignature methodSignature = (MethodSignature)point.getSignature();
Method method = methodSignature.getMethod();
// Action
Action annotation = method.getAnnotation(Action.class);
// Action value
String value = annotation.value();
//
Object[] objArray = point.getArgs();
//
List<String> list = new ArrayList<>();
for (Object obj: objArray) {
if(obj instanceof Collection){
list = (List<String>) obj;
}
}
}
}
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.