我正在学习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 :[]