enverse - 如何在自定义修订列表器中自定义用户ID

时间:2017-09-01 01:22:35

标签: jpa spring-boot spring-security microservices hibernate-envers

我正在使用jpa与微服务的hibernate envers。 我试过了

public class MyRevisionEntityListener implements RevisionListener {
  @Override
  public void newRevision(Object revisionEntity) {
    // If you use spring security, you could use SpringSecurityContextHolder.
    final UserContext userContext = UserContextHolder.getUserContext();
    MyRevisionEntity mre = MyRevisionEntity.class.cast( revisionEntity );       
    mre.setUserName( userContext.getUserName() );
  } 
}

它可以更好地保存用户名。但我想将用户名保存为#34;系统"当由另一个微服务更新记录时,以及用户更新时应如上所述保存用户名。如何根据我的要求自定义上述代码

1 个答案:

答案 0 :(得分:0)

根据您提供的代码,似乎最合乎逻辑的可能是简单地向您的UserContext线程局部变量添加一个布尔标志,并简单地在侦听器中检查它。

默认情况下,此标志为false,但对于您的特殊微服务或业务用例,您可以暂时更改该状态,运行您的流程,并在完成后清除该状态,非常类似于Web过滤器链适用于Web应用程序。