spring boot 使用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());
}
}
这个例子展示了如何创建一个简单的AOP日志切面来记录服务层(YourService)的方法调用。这个切面定义了三个通知:@Before、@AfterReturning和@AfterThrowing,分别在方法执行前、执行后返回结果和抛出异常时执行。通过JoinPoint可以获取方法签名、参数等信息。这个例子需要在Spring Boot项目中配置AspectJ来使注解生效。
评论已关闭