记录用户操作

本文介绍了如何使用Spring AOP来记录用户在Web项目中的增删改操作,以满足日志记录需求。通过创建自定义注解和切面类,实现了在操作执行前后插入日志记录,减少了代码侵入并提高了代码维护性。
摘要由CSDN通过智能技术生成

在最近工作中,博主手头上的Web项目提了一个新的需求,这个需求大体上就是希望系统能够记录用户做了哪些操作,包括这些操作的细节。

大家都知道,用户的操作无非就是增,删,改,查。因为我现在做的这个项目对用户的查询操作不敏感,所以只需记录增,删,改。

在做之前呢,我的leader给了我一个建议:你要不写一个公共方法吧,到时候哪一个模块需要这个功能就让他自己去调用。这当然是一个方法,而且相对省事,因为我只需要将公共的逻辑抽象出来,之后就算有新的模块添加进项目来,只要这块的功能逻辑不发生大的改变,也就没我啥事了。但是我的内心是拒绝的,因为我早就听说AOP十分适合权限,日志等功能的实现,而且我之前从没有用AOP的机会,现在菜都给送到眼前了,难道还有不吃的道理吗?所以我跟Leader说:这块很适合用AOP来做啊。然后一副我很精通AOP的样子看着Leader。Leader:我还是建议你用公共方法......

OK, 没有完全拒绝那就是认同了,好的,就让我们用AOP的方法来实现这个功能吧。

1.表字段的设计

既然是做记录,而且我打算将这些操作记录放在一张表里,那么先将操作公共的字段定下来。作为主键的ID肯定是必须的,但是这个主键不适合再使用自增ID,很快就会被消耗完。所以这里使用随机字符串。下面是实现随机字符串的工具类和记录实体部分的code。

public class UUIDGenerator implements IdentifierGenerator {

    @Override
    public Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException {
        return UUID.randomUUID().toString().replace("-", "").toLowerCase();
    }
}


    @Id
    @GeneratedValue(generator = "system-uuid")
    // xx部分是UUIDGenerator类的绝对地址
    @GenericGenerator(name = "system-uuid", strategy = "xx.xx.xx.xxxx.xx.UUIDGenerator")
    private String id;

除此之外还需要有用户操作的模块名(实体名), 用户操作的模块id(实体id),实体名,操作类型,操作人(用户),操作时间。</

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值