Spring Boot JPA 开启审计字段自动注入

Spring Boot About 1,390 words

需求

对于一些审计字段,如:创建时间,更新时间,创建人,更新人。

注解

Spring提供了这几种审计字段的注解,分别是:

  • @CreatedDate:创建时间
  • @LastModifiedDate:最后修改时间
  • @CreatedBy:创建人
  • @LastModifiedBy:最后修改人

自动注入

需添加@EnableJpaAuditing,启用审计字段自动注入,且在需要审计的实体类上添加@EntityListeners(AuditingEntityListener.class)审计实体监听。

对于创建人和修改人,需要注入AuditorAware对象,否则无法自动注入@CreatedBy@LastModifiedBy

代码

第一步

@EnableJpaAuditing开启审计,auditorAwareRef指定审计人。

对于Spring Security可使用注释部分代码。

@Configuration
@EnableJpaAuditing(auditorAwareRef = "auditorProvider")
public class JpaAuditConfig {

    @Bean
    public AuditorAware<String> auditorProvider() {
//        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
//
//        if (authentication == null || !authentication.isAuthenticated()) {
//            return null;
//        }
//        return ((User) authentication.getPrincipal()).getUsername();

        return () -> Optional.of("unknown");
    }
}

第二步

公共类上开启审计实体监听,字段上标注审计注解。

@Data
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class CommonEntity {

    @CreatedDate
    @Column
    private LocalDateTime createTs;

    @LastModifiedDate
    @Column
    private LocalDateTime updateTs;

    @CreatedBy
    @Column
    private String createBy;

    @LastModifiedBy
    @Column
    private String updateBy;

}

参考

https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html

Views: 944 · Posted: 2023-02-27

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh