需求分析
系统需要对用户的操作进行记录,方便未来溯源
首先想到的就是在每个方法中,去实现记录的逻辑,但是这样做肯定是不现实的,首先工作量大,其次违背了软件工程设计原则(开闭原则)
这种需求显然是对代码进行增强,首先想到的是使用 SpringBoot 提供的 AOP 结合注解的方式来实现
功能实现
1、 需要一张记录日志的 Log 表
导出的 sql 如下:
-- mcams.t_log definition
CREATE TABLE `t_log` (
`log_id` int NOT NULL AUTO_INCREMENT COMMENT '日志编号',
`user_id` int NOT NULL COMMENT '操作人id',
`operation` varchar(128) NOT NULL COMMENT '用户操作',
`method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '操作的方法',
`params` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '方法的参数',
`ip` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '用户的ip',
`create_time` timestamp NULL DEFAULT NULL COMMENT '操作时间',
`cost_time` int DEFAULT NULL COMMENT '花费时间',
PRIMARY KEY (`log_id`)
) ENGINE=InnoDB AUTO_INCREMENT=189 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
2、我使用的是 Spring Boot 所以需要引入 spring aop 的 starter#
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
如果是使用 spring 框架的,引入 spring-aop 即可
3、Log 实体类#
package com.xiaofengstu.mcams.web.entity;
import