interceptor似乎无法正常工作—存储方法springboot2.x

balp4ylt  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(173)

试一试 interceptor 用于记录目的。创建了一个扩展 CrudRepositoryRedis 实体。我有简单的 repository.save(entity) 方法。
我的拦截器如下所示:

public class MyRepoInterceptor extends EmptyInterceptor {

  @Override
  public boolean onSave(Object entity, Serializable id, 
                      Object[] state, String[] propertyNames, Type[] types) {
     log.info("Saving...");
     return super.onSave(entity, id, state, propertyNames, types);
  }

  @Override
  public boolean onPrepareStatement(String sql)  {
     log.info("Prepared Statement");
     return super.onPrepareStatement(sql);
  }
}

我看不到消息 Saving... ,显然截获器不在这里工作。
但是,在同一个应用程序中,我有另一个 mySQL . 在这里,我有一个存储库方法 findByXXX . 拦截器正在拦截这个方法,我看到了消息 Prepared Statement .
我的拦截器配置类:

@Component
 public class RepoInterceptor implements HibernatePropertiesCustomizer {

    @Autowired
    MyRepoInterceptor myRepoInterceptor;

    @Override
     public void customize(Map<String, Object> hibernateProperties) {
      //Tried this too. but no luck
      //hibernateProperties.put("hibernate.session_factory.interceptor", myRepoInterceptor); 
      hibernateProperties.put("hibernate.ejb.interceptor", myRepoInterceptor);
    }
 }

有人试过这个吗?我所要做的就是,在应用程序的任何地方记录“crud/jparepository”方法对数据库的任何调用,而不强迫开发人员进行记录。
如果以上不是正确的解决方案,还有其他更好的解决方案吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题