完整的“spring jpa 审计功能自定义填充字段方式”的攻略分为以下几个步骤:
- 借助 Spring 审计功能实现自动填充字段
- 自定义填充字段的值生成方式
下面我们对每个步骤进行详细说明。
一、借助 Spring 审计功能实现自动填充字段
Spring Data JPA 提供了审计功能,即自动为实体的某些特定字段填充值,比如创建时间、修改时间、创建人员、修改人员等常见字段。通过在实体类中添加如下注解即可启用该功能:
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
public abstract class BaseEntity {
@CreatedDate
@Column(name = "create_time", updatable = false)
private LocalDateTime createTime;
@LastModifiedDate
@Column(name = "update_time")
private LocalDateTime updateTime;
@CreatedBy
@Column(name = "create_by", updatable = false)
private String createBy;
@LastModifiedBy
@Column(name = "update_by")
private String updateBy;
// 省略 getter/setter 方法
}
在上述代码中,我们定义了一个 BaseEntity 基类,并使用 @EntityListeners 注解指定了审计监听器,使其能自动监听实体类的创建和修改事件,并完成自动填充。具体而言,@CreatedDate 和 @LastModifiedDate 注解分别表示创建时间和修改时间,@CreatedBy 和 @LastModifiedBy 则分别表示创建人员和修改人员。这些注解都可以直接加在实体类的字段上。
二、自定义填充字段的值生成方式
前面的代码创建和更新时间字段使用的是 Spring Data 提供的自动生成时间的方式,但是有时候我们需要自己定义填充字段的值生成方式。此时,我们需要借助 Spring 提供的 AuditorAware 接口和实现类,来自定义生成方式。
下面是一个自定义生成 UUID 作为创建人员和修改人员的示例代码:
@Configuration
@EnableJpaAuditing(auditorAwareRef = "uuidAuditorAware")
public class AuditConfig {
@Bean
public AuditorAware<String> uuidAuditorAware() {
return new UuidAuditorAware();
}
}
public class UuidAuditorAware implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
return Optional.of(UUID.randomUUID().toString());
}
}
核心代码在 AuditorAware 接口的实现类 UuidAuditorAware 中。该实现类中 getCurrentAuditor() 方法返回一个随机生成的 UUID 字符串,作为当前操作人员的身份标识。在上述代码中,我们通过 @EnableJpaAuditing 注解指定了 auditorAwareRef 为 uuidAuditorAware,表示使用我们自定义的 UUID 实现类来获取审计信息。
经过上述配置,当我们添加或修改实体的时候,会自动调用 getCurrentAuditor() 方法来获取当前操作人员的身份标识,并填充到对应的字段中。比如:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public User save(User user) {
return userRepository.save(user);
}
}
在上述代码中,我们通过 userRepository 调用 save 方法来保存用户实体。由于我们实现了自定义的 AuditConfig 类,因此在保存实体的时候,会自动调用 getCurrentAuditor() 方法获取当前操作人员的身份标识,并填充到对应的字段中。如果需要创建时间和修改时间也是同理。
以上就是 Spring JPA 审计功能自定义填充字段方式的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring jpa 审计功能自定义填充字段方式 - Python技术站