[SPRING] Spring AOP : 포인트 컷 어노테이션의 매개 변수 얻기
SPRINGSpring AOP : 포인트 컷 어노테이션의 매개 변수 얻기
다음 측면을 정의했다고 생각하십시오.
@Aspect
public class SampleAspect {
@Around(value="@annotation(sample.SampleAnnotation)")
public Object display(ProceedingJoinPoint joinPoint) throws Throwable {
// ...
}
}
및 주석
public @interface SampleAnnotation {
String value() default "defaultValue";
}
거기에 내 aspect 경우 표시 메서드에서 주석 SampleAnnotation의 값 매개 변수를 읽을 수있는 방법이 있나요?
당신의 도움을 주셔서 감사합니다, 에릭
해결법
-
==============================
1.조언 서명 변경
조언 서명 변경
@Around(value="@annotation(sampleAnnotation)") public Object display(ProceedingJoinPoint joinPoint, SampleAnnotation sampleAnnotation ) throws Throwable { // ... }
그러면 주석의 값에 액세스 할 수 있습니다.
자세한 정보는 docs를 참조하십시오.
-
==============================
2.Bellow 나는 AOP 구현의 전체 예제를 추가 할 것이다. 여기서는 사용자 정의 pointCut 어노테이션에서 매개 변수를 가져 오는데, 여기서 내 조언은 함수의 실행 시간을 계산하는 것을 목표로한다.
Bellow 나는 AOP 구현의 전체 예제를 추가 할 것이다. 여기서는 사용자 정의 pointCut 어노테이션에서 매개 변수를 가져 오는데, 여기서 내 조언은 함수의 실행 시간을 계산하는 것을 목표로한다.
1 - 사용자 정의 주석 :
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface AnnotationLogExecutionTime { public boolean isActivate() default false; }
2- 컨트롤러 :
@AnnotationLogExecutionTime(isActivate = true) @PostMapping("/connection") public HttpEntity<String> createAuthenticationToken(HttpServletRequest request, @RequestBody AuthenticationRequest authenticationRequest) {...}
3- 조언
@Component @Aspect public class LoggingExecutionTimeAdvice { @Around("@annotation(annotationLogExecutionTime)") public Object logExecutionTime(ProceedingJoinPoint joinPoint, AnnotationLogExecutionTime annotationLogExecutionTime) throws Throwable { if(annotationLogExecutionTime.isActivate()){//Here I recover the value!!!! long start = System.currentTimeMillis(); Object proceed = joinPoint.proceed(); long executionTime = System.currentTimeMillis() - start; System.out.println(joinPoint.getSignature() + " executed in " + executionTime + "ms"); return proceed; } Object proceed = joinPoint.proceed(); return proceed; } }
설명:
우리의 조언 (logExecutionTime)은 (joinPoint) AnnotationLogExecutionTime (우리의 커스터마이징 어노테이션)으로 주석을 달아주는 함수이므로, 실행 시키거나 실행하지 않기를 원한다. 그래서 우리는 우리의 membre에서 값을 얻을 것이다. 맞춤 주석 (당신이 물어 본다;))
from https://stackoverflow.com/questions/5282242/spring-aop-getting-parameters-of-the-pointcut-annotation by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 부팅시 사용자 정의 변환기를 등록하는 방법은 무엇입니까? (0) | 2019.02.10 |
---|---|
[SPRING] ScopedProxy는 사용할 세션을 어떻게 결정합니까? (0) | 2019.02.10 |
[SPRING] 스프링 보안 + MVC : 동일한 @RequestMapping, 다른 @Secured (0) | 2019.02.10 |
[SPRING] 열거 형으로 봄 MVC에서 선택하십시오. (0) | 2019.02.10 |
[SPRING] Spring Security를 사용하여 특정 URL 패턴의 보안을 구분하기 위해 HTTP 메소드 (예 : GET, PUT, POST)를 사용하려면 어떻게해야합니까? (0) | 2019.02.10 |