概述
创建User类 测试类只有一个name属性
@Entity
@Table(name = "UcenterUser")
@Data
public class User extends BaseEntity{
private String name;
}
抽取一个基类BaseEntity
@EntityListeners(AuditingEntityListener.class) 添加监听器
@MappedSuperclass
@Getter
@Setter
public class BaseEntity {
@Id
@GeneratedValue(generator = "IDGenerator")
@GenericGenerator(name = "IDGenerator",strategy = "uuid2")
private String id;
@CreatedDate
private Date gmtCreate;
@CreatedBy
private String createUserId;
@LastModifiedDate
private Date gmtModified;
@LastModifiedBy
private String updateUserId;
}
创建配置类
@Configuration
@EnableJpaAuditing 这个会创建该功能的相关类
public class AuditorConfiguration {
public AuditorConfiguration(){
System.out.println("spring容器启动初始化----审计配置");
}
@Bean
public AuditorAware<User> auditorProvider() { 自定义一个审计信息获取一些用户信息
return new AuditorAware(){
@Override
public Optional<String> getCurrentAuditor() {
Random random = new Random();
String str = ""+random.nextInt(100021);
System.out.println("用户名-----------"+str);
return Optional.of(str);
}
};
}
}
创建Dao接口 这里使用jpa相关功能
@Repository
public interface UserRepository extends JpaRepository<User,String>{
}
相关测试接口
@RestController
@SpringBootApplication
public class WkApplication {
@Autowired
UserRepository userRepository;
@RequestMapping("/")
Object home(){ 创建用户
User user1 = new User();
user1.setName("zymdfhf");
userRepository.save(user1);
return userRepository.findAll();
}
@RequestMapping("/{id}")
Object test1(@PathVariable("id")User user){
System.out.println(user);
Random random = new Random();
user.setName(""+random.nextInt(100000));
userRepository.flush(); 修改用户来测试审计信息更新
return user;
}
public static void main(String[] args) {
SpringApplication.run(WkApplication.class, args);
}
}
运行项目访问 创建了一个user 并自动插入里相关字段
接着调用修改接口修改了name值 执行修改
自动写值成功了。。。。
出现了一个新的问题 gmtCreate的时间精度出现问题
修改BaseEntity类
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
@Getter
@Setter
public class BaseEntity {
@Id
@GeneratedValue(generator = "IDGenerator")
@GenericGenerator(name = "IDGenerator",strategy = "uuid2")
protected String id;
@CreatedDate
@Temporal(TemporalType.TIMESTAMP)
@Column(columnDefinition="datetime(3)")
protected Date gmtCreate;
@CreatedBy
protected String createUserId;
@LastModifiedDate
@Temporal(TemporalType.TIMESTAMP)
@Column(columnDefinition="datetime(3)")
protected Date gmtModified;
@LastModifiedBy
protected String updateUserId;
}
重新进行以上步骤就行了
最后
以上就是单身服饰为你收集整理的spring boot 使用审计的全部内容,希望文章能够帮你解决spring boot 使用审计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复