Spring data jpa Auditing 学习与应用

Auditing 意思是审计/审核。
业务系统中每张表基本都存在创建时间,更新时间,创建人,修改人,并且方便我们记录操作日志。

问题1 每张表都需要做重复的工作吗?

每张表操作是需要重复工作,目的方便记录日志

问题2 每操作一张表都需要写重复的代码吗?

可以封装代码,自己分装的代码需要时间,bug有多,有没有更好的解决方案,spring data 为我们提供了更方便的操作,如:

  • @CreatedDate 创建时间
  • @LastModifiedDate 最后一次修改时间
  • @CreatedBy 创建人
  • @LastModifiedBy最后一次修改人
    提取公用属性自动填写。再也不用操心操作记录和时间问题。
    创建人如何实现,spring data 提供了AuditorAware接口告诉JPA当前的用户是谁
package com.app.security.entity;

import com.app.security.config.JwtUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.AuditorAware;
import org.springframework.stereotype.Component;

import java.io.Serializable;
import java.util.Optional;

@Slf4j
@Component
public class AuditorAwareImpl implements AuditorAware<SysUser>, Serializable {

    private Optional<SysUser> auditor=Optional.empty();


    /**
     * @param auditor the auditor to set
     */
    public void setAuditor(SysUser auditor) {
        this.auditor = Optional.of(auditor);
    }

    /*
     * (non-Javadoc)
     * @see org.springframework.data.domain.AuditorAware#getCurrentAuditor()
     */
    public Optional<SysUser> getCurrentAuditor() {
        SysUser user=null;
        boolean present = auditor.isPresent();
        if(!present) {
            try {
                //获取当前用户,可以从session/缓存/token等地方获取用户
                user = JwtUtil.getUser();
            } catch (Exception e) {
                log.error("更新&添加--->用户获取失败");
            }
            if(user!=null)auditor=auditor.of(user);
        }
        return auditor;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值