SpringBoot中使用AOP实现日志记录功能
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class LoggingAspect {
private static final Logger LOGGER = LoggerFactory.getLogger(LoggingAspect.class);
@Pointcut("execution(* com.example.service.YourService.*(..))") // 根据实际情况修改包名和类名
public void serviceLayerMethods() {
}
@Before("serviceLayerMethods()")
public void logBefore(JoinPoint joinPoint) {
LOGGER.info("Method: {}", joinPoint.getSignature().getName());
// 打印参数等其他信息
}
@AfterReturning(pointcut = "serviceLayerMethods()", returning = "result")
public void logAfterReturning(Object result) {
LOGGER.info("Result: {}", result);
}
@AfterThrowing(pointcut = "serviceLayerMethods()", throwing = "ex")
public void logAfterThrowing(Exception ex) {
LOGGER.error("Exception: {}", ex.getMessage());
}
}
这个示例代码展示了如何在Spring Boot应用中使用AOP来记录服务层(YourService所在包)的方法调用。这里使用了@Pointcut
注解来定义一个切入点,@Before
注解来在方法执行前记录日志,@AfterReturning
注解来在方法成功返回后记录结果,以及@AfterThrowing
注解来在方法抛出异常后记录异常信息。
评论已关闭