春季启动AOP,joinPoint.getArgs()返回一个空对象数组

时间:2020-09-17 13:47:44

标签: spring-boot aop spring-aop

我正在学习Spring Boot AOP,并且正在尝试对示例应用程序进行集中式日志记录。我可以在控制台中看到日志,但是在调试后,我发现joinpoint.getArgs()方法返回空对象数组,但日志中未显示参数。有人可以建议我我所缺少的吗?

谢谢。

AOP的pom.xml依赖项

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

方面类

package com.dev.aop;

import java.util.Arrays;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.core.JsonProcessingException;

@Component
@Aspect
public class AopDemoApplicationAspect {
    private static Logger logger = LoggerFactory.getLogger(AopDemoApplicationAspect.class);

    @Before("execution(* com.dev.controller.*.*(..)) || execution(* com.dev.service.*.*(..))")
    public void logBrfore(JoinPoint joinpoint) throws JsonProcessingException {
        logger.info("logBefore() is running!");
        logger.info("Going to Enter : [{}]" + joinpoint.getTarget().getClass().toString() + "::"
                + joinpoint.getSignature().getName() + "()" + "::arguments :" + Arrays.toString(joinpoint.getArgs()));
    }

    @After("execution(* com.dev.controller.*.*(..)) || execution(* com.dev.service.*.*(..))")
    public void logAfter(JoinPoint joinpoint) throws JsonProcessingException {
        logger.info("logAfter() is running!");
        logger.info("Going to Enter : [{}]" + joinpoint.getTarget().getClass().toString() + "::"
                + joinpoint.getSignature().getName() + "()" + "::arguments :" + Arrays.toString(joinpoint.getArgs()));
    }
} 

服务等级

@Service
public class UserService {
    
    public Optional<List<User>> findAll(){
        return Optional.of(new ArrayList<User>() {/**
             * 
             */
            private static final long serialVersionUID = 1L;

            { 
            add(new User("ak","287623485r2","ak@gmail.com"));
            add(new User("bk","287623485783462","bk@gmail.com"));
            add(new User("ck","28762325485783462","ck@gmail.com"));
            }});
    }} 

控制台日志

2020-09-17 19:01:51.815  INFO 13684 --- [nio-8086-exec-1] com.dev.aop.AopDemoApplicationAspect     : logBefore() is running!
2020-09-17 19:01:51.817  INFO 13684 --- [nio-8086-exec-1] com.dev.aop.AopDemoApplicationAspect     : Going to Enter : [{}]class com.dev.controller.UserController::getALLUser()::arguments :[]
2020-09-17 19:01:51.830  INFO 13684 --- [nio-8086-exec-1] com.dev.aop.AopDemoApplicationAspect     : logBefore() is running!
2020-09-17 19:01:51.830  INFO 13684 --- [nio-8086-exec-1] com.dev.aop.AopDemoApplicationAspect     : Going to Enter : [{}]class com.dev.service.UserService::findAll()::arguments :[]
2020-09-17 19:01:51.836  INFO 13684 --- [nio-8086-exec-1] com.dev.aop.AopDemoApplicationAspect     : logAfter() is running!
2020-09-17 19:01:51.836  INFO 13684 --- [nio-8086-exec-1] com.dev.aop.AopDemoApplicationAspect     : Going to Enter : [{}]class com.dev.service.UserService::findAll()::arguments :[]
2020-09-17 19:01:51.843  INFO 13684 --- [nio-8086-exec-1] com.dev.aop.AopDemoApplicationAspect     : logAfter() is running!
2020-09-17 19:01:51.843  INFO 13684 --- [nio-8086-exec-1] com.dev.aop.AopDemoApplicationAspect     : Going to Enter : [{}]class com.dev.controller.UserController::getALLUser()::arguments :[]

0 个答案:

没有答案