Spring AOP 自定义注解 实现操作日志监控

黑暗征服者 2024-02-26 ⋅ 23 阅读

在开发过程中,我们经常需要记录用户的操作日志,以便后续的日志分析和监控。Spring AOP和自定义注解的结合使用,可以非常方便地实现操作日志的监控功能。

1. 引入依赖

首先,我们需要在项目的pom.xml文件中,添加Spring AOP的依赖:

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

2. 创建自定义注解

接下来,我们创建一个自定义注解@Log,用于标记需要监控的方法:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {
    String value() default "";
}

3. 编写切面类

然后,我们编写一个切面类LogAspect,用于实现操作日志的记录功能:

@Aspect
@Component
public class LogAspect {

    @Autowired
    private HttpServletRequest request;

    @Around("@annotation(com.example.demo.annotation.Log)")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        // 获取被注解方法的名称
        String methodName = joinPoint.getSignature().getName();

        // 获取被注解方法的参数
        Object[] args = joinPoint.getArgs();

        // 记录日志,这里只是打印日志,可以根据实际需求保存到数据库或文件中
        System.out.println("用户 " + request.getRemoteUser() + " 执行了方法:" + methodName);
        
        // 执行目标方法
        Object result = joinPoint.proceed(args);

        return result;
    }
}

4. 使用自定义注解

最后,我们在需要监控的方法上使用@Log注解:

@Service
public class UserService {

    @Log("新增用户")
    public void addUser(User user) {
        // 添加用户的代码逻辑
    }
    
    @Log("删除用户")
    public void deleteUser(String userId) {
        // 删除用户的代码逻辑
    }
}

总结

通过上述的步骤,我们成功地实现了使用Spring AOP和自定义注解来监控操作日志的功能。在实际项目中,可以根据需要将操作日志保存到数据库或文件中,以便后续的分析和监控。

希望本文对你理解Spring AOP和自定义注解的使用有所帮助,如果有任何疑问或建议,欢迎留言探讨~


全部评论: 0

    我有话说: