基于spring data的auditoraware审计功能 -欧洲杯足彩官网

`
wiselyman
  • 浏览: 2076986 次
  • 性别:
  • 来自: 合肥
博主相关
  • 博客
  • 微博
  • 相册
  • 收藏
  • 博客专栏
    点睛spring4.1
    浏览量:80745
    点睛spring mvc4...
    浏览量:129940
    社区版块
    • ( 11)
    • ( 19)
    • ( 0)
    存档分类
    最新评论

    基于spring data的auditoraware审计功能

    spring data提供支持审计功能:即由谁在什么时候创建或修改实体。spring data提供了在实体类的属性上增加@createdby,@lastmodifiedby,@createddate,@lastmodifieddate注解,并配置相应的配置项,即可实现审计功能,有系统自动记录createdbycreateddatelastmodifiedbylastmodifieddate四个属性的值,下面为具体的配置项。

    示例

    创建一个实体类

    package com.hfcsbc.infrastructureservice.domain;
    import com.hfcsbc.repository.support.domain.abstractauditingentity;
    import lombok.data;
    import org.springframework.data.annotation.createdby;
    import org.springframework.data.annotation.createddate;
    import org.springframework.data.annotation.lastmodifiedby;
    import org.springframework.data.annotation.lastmodifieddate;
    import org.springframework.data.jpa.domain.support.auditingentitylistener;
    import javax.persistence.*;
    import java.util.date;
    /**
     * create by pengchao on 2018/3/7
     */
    @entity
    @data
    @entitylisteners({auditingentitylistener.class})
    public class person {
        @id
        @generatedvalue
        private long id;
        private string name;
        private integer age;
        @createdby
        @column(
                name = "created_by",
                nullable = false,
                length = 50,
                updatable = false
        )
        private string createdby;
        @createddate
        @column(
                name = "created_date",
                nullable = false,
                updatable = false
        )
        private date createddate = new date();
        @lastmodifiedby
        @column(
                name = "last_modified_by",
                length = 50
        )
        private string lastmodifiedby;
        @lastmodifieddate
        @column(
                name = "last_modified_date"
        )
        private date lastmodifieddate = new date();
    }
    

    创建相应的repository

    package com.hfcsbc.repository;
    import com.hfcsbc.domain.person;
    import org.springframework.data.jpa.repository.jparepository;
    /**
     * create by pengchao on 2018/3/7
     */
    public interface personrepository extends jparepository {
    }
    

    配置获取用户信息的bean

    package com.hfcsbc.infrastructureservice.config;
    import org.springframework.data.domain.auditoraware;
    import org.springframework.security.core.authentication;
    import org.springframework.security.core.context.securitycontextholder;
    import org.springframework.stereotype.component;
    import java.util.optional;
    /**
     * create by pengchao on 2018/3/7
     */
    @component("auditoraware")
    public class auditorawareimpl implements auditoraware {
        @override
        public optional getcurrentauditor() {
            authentication authentication = securitycontextholder.getcontext().getauthentication();
            return optional.of(authentication.getprincipal().tostring());
        }
    }
    

    在spring boot入口类开启审计功能

    package com.hfcsbc.infrastructureservice;
    import org.springframework.boot.springapplication;
    import org.springframework.boot.autoconfigure.springbootapplication;
    import org.springframework.data.jpa.repository.config.enablejpaauditing;
    import org.springframework.scheduling.annotation.enableasync;
    @springbootapplication
    @enablejpaauditing(auditorawareref = "auditoraware")
    @enableasync
    public class personapplication {
        
        public static void main(string[] args) {
            springapplication.run(personapplication.class, args);
        }
    }
    

    即完成配置,在使用repository保存对象时,createdbycreateddatelastmodifiedbylastmodifieddate有审计功能自动插入

    注:在异步方法中如何获取用户信息

    由于在异步方法中使用repository保存对象,获取不到用户用户信息,需增加如下配置项,即可在authentication获取用户的信息

    package com.hfcsbc.config;
    import org.springframework.beans.factory.config.methodinvokingfactorybean;
    import org.springframework.context.annotation.bean;
    import org.springframework.context.annotation.configuration;
    import org.springframework.security.core.context.securitycontextholder;
    /**
     * create by pengchao on 2018/3/7
     */
    @configuration
    public class auditorawareconfig {
        @bean
        public methodinvokingfactorybean methodinvokingfactorybean() {
            methodinvokingfactorybean methodinvokingfactorybean = new methodinvokingfactorybean();
            methodinvokingfactorybean.settargetclass(securitycontextholder.class);
            methodinvokingfactorybean.settargetmethod("setstrategyname");
            methodinvokingfactorybean.setarguments(new string[]{securitycontextholder.mode_inheritablethreadlocal});
            return methodinvokingfactorybean;
        }
    }
    

    securitycontextholder的主要功能是将当前执行的进程和securitycontext关联起来。
    securitycontextholder.mode_inheritablethreadlocal:用于线程有父子关系的情景中,子线程继承父线程的securitycontextholder;
    securitycontextholder.mode_inheritablethreadlocal:全局共用securitycontextholder。

     

    源码地址:

    0
    0
    分享到:
    评论

    相关推荐

      主要介绍了基于spring data的auditoraware审计功能的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

      spring data jpa api。 spring data jpa 开发文档。 欧洲杯足彩官网 spring data jpa api。

      spring data mongodb api。 spring data mongodb 开发文档。

      本次课程以springdata为中心,重点讲解了其jpa组件,扩展讲解了redis,mongdb,es组件,并且对部分组件做了必要的源码分析。而且在课程的最后部分加入了一个综合案例,可以将前面章节所学知识点应用到一个项目中,帮助...

      基于springboot spring data jpa mybatis的仓库管理系统 基于springboot spring data jpa mybatis的仓库管理系统 基于springboot spring data jpa mybatis的仓库管理系统 基于springboot spring data jpa mybatis的...

      1. 尚硅谷_springdata_概述 2. 尚硅谷_springdata_helloworld 3. 尚硅谷_springdata_repository接口 4. 尚硅谷_springdata_repository查询方法定义规范 5. 尚硅谷_springdata_query注解 6. 尚硅谷_springdata_...

      1、基于springboot spring data jpa mybatis的仓库管理系统源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考...

      spring-data-jest, jest的spring data 实现 spring data jest 基于on客户端的elasticsearch的spring data 实现仅在 http ( 例如aws上) 可以访问的情况下使用 spring data 和elasticsearch群集。

      在线教育平台服务端基于spring boot构建,采用spring cloud微服务框架。 持久层:mysql、mongodb、redis、elasticsearch 数据访问层:使用spring data jpa 、mybatis、spring data mongodb等 业务层:spring ioc、...

      'springdatajpa从入门到精通'以springboot为技术基础 从入门到精通 由浅入深地介绍springdatajpa的使用。有语法 有实践 有原理剖析。'springdatajpa从入门到精通'分为12章 内容包括整体认识jpa、jpa基础查询方法、...

      采用目前主流的微服务系统架构 springboot springcloud springdata进行开发,前端技术采用vue.js 。系统整体分为 三大部分:微服务、网站前台、网站管理后台。功能模块包括文章、问答、招聘、活 动、吐槽、交友、...

      spring data jpa中文文档1.4.3

      1. the spring data project 2. repositories: convenient data access layers 3. type-safe querying using querydsl . . part ii. relational databases 4. jpa repositories 5. type-safe jdbc programming with ...

      本文档详细介绍了spring data jpa的概念、spring data jpa能够做什么,services和 repositories的对比以及各种repositories的使用方法。

      spring data mongodb中文文档 便宜下载了。

      spring data 项目的目的是为了简化构建基于 spring 框架应用的数据访问计数,包括非关系数据库、map-reduce 框架、云数据服务等等;另外也包含对关系数据库的访问支持。spring data 包含多个子项目:commons - 提供...

      (完整版)基于springcloud微服务系统设计方案.docx(完整版)基于springcloud微服务系统设计方案.docx(完整版)基于springcloud微服务系统设计方案.docx(完整版)基于springcloud微服务系统设计方案.docx(完整版)基于...

      spring注解完整版 spring data jpa官方文档中文翻译 jpa2.0官方文档 文档内容齐全 值得参考学习

      《spring data实战》介绍了spring data、repository、querydsl的基础理念,然后阐述了借助spring data如何简化nosql和大数据的访问,并且涵盖了使用spring roo和spring data rest导出功能如何实现应用的快速开发,除...

      基于springboot springdatajpa mysql的课表排课及实验室机房管理系统

    global site tag (gtag.js) - google analytics
    网站地图