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("@annotation(com.example.demo.Loggable)") // 替换为你的注解路径
public void loggableMethods() {
}
@Before("loggableMethods()")
public void doBefore(JoinPoint joinPoint) {
// 在方法执行前执行
logger.info("Method: " + joinPoint.getSignature().toShortString() + " called with arguments: " + Arrays.toString(joinPoint.getArgs()));
}
@AfterReturning(pointcut = "loggableMethods()", returning = "result")
public void doAfterReturning(Object result) {
// 在方法返回结果后执行
logger.info("Method returned with result: " + result);
}
@AfterThrowing("loggableMethods()")
public void doAfterThrowing() {
// 在方法抛出异常后执行
logger.error("Method threw an exception");
}
@After("loggableMethods()")
public void doAfter() {
// 在方法执行后执行
logger.info("Method finished");
}
}
在这个例子中,我们定义了一个切面LoggingAspect
,它会拦截所有带有Loggable
注解的方法,并记录这些方法的执行情况。这个例子展示了如何使用Spring AOP来增强方法的日志记录功能。
评论已关闭