SpringBoot 는 @ Aspect 를 이용 하여 AOP 를 실현 합 니 다.
3451 단어 자바
commons-collections
commons-collections
3.2
org.aspectj
aspectjrt
1.9.2
org.springframework.boot
spring-boot-starter-aop
2.1.4
사용자 정의 주석
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LogRecord {
String logRecord() default "";
}
Aspect 절단면 작성
import com.yunzhitx.mall.admin.controller.core.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
@Component
@Slf4j
@Aspect
public class LogRecordAdvice {
/**
* 、
*/
@Before("@annotation(logRecord)")
public void before(JoinPoint point, LogRecord logRecord){
System.out.println(" ");
}
@AfterReturning(returning = "obj",pointcut="@annotation(logRecord)")
public void after(JoinPoint point,Object obj,LogRecord logRecord){
// obj ( ), logRecord
System.out.println(" ");
String record = logRecord.logRecord();
log.info(record);
}
@AfterThrowing("@annotation(logRecord)")
public void afterThrowing(JoinPoint point,LogRecord logRecord){
}
/**
* 、Pointcut , com.yunzhitx.community.controller.template.topic
*/
@Pointcut("within(com.yunzhitx.community.controller.template.topic..*)")
public void adminValidatePointcut(){
}
@Before("adminValidatePointcut()")
public void adminValidateBefore(){
System.out.println("Pointcut , ");
}
/**
* Pointcut + annotation
*/
@Pointcut("@annotation(com.yunzhitx.community.controller.log.LogRecord)")
public void logPointCut() {
}
/**
*
*
* @param joinPoint
*/
@AfterReturning(pointcut = "logPointCut()", returning = "jsonResult")
public void doAfterReturning(JoinPoint joinPoint, Object jsonResult) {
Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
Method method = methodSignature.getMethod();
if (method != null) {
//
LogRecord log= method.getAnnotation(LogRecord.class);
// ...
}
}
}
주해 방식, 강화 방법 에 사용자 정의 주 해 를 달 아야 합 니 다.
@RestController
@RequestMapping("api/v1/item/itemCategory")
public class ItemCategoryRest {
@PostMapping("add")
@LogRecord(logRecord = " ")
public InvokeResult add(@RequestBody @Valid ItemCategoryCreateCommand command) {
ItemCategory itemCategory = ItemCategoryAssembler.toItemCategory(command);
// itemCategoryService.addItemCategory(itemCategory);
return InvokeResult.success(itemCategory.getId());
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.