当前位置: 首页 > 知识库问答 >
问题:

如何在spring boot应用程序中访问AuditReaderFactory?

郭瀚海
2023-03-14

我正在使用Spring Boot和Spring data jpa。我也在使用hibernate envers,我需要访问AuditReaderFactory,以便我可以编写审计查询。

因为它是Spring Boot和spring数据jpa,所以一切都是自动配置的。所以当我这么做的时候,

@Autowired
AuditReaderFactory auditReaderFactory;

它不起作用。我得到以下错误。

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.hibernate.envers.AuditReaderFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency

如何在我的存储库类中获得对AuditReaderFactory的正确引用?

共有3个答案

左康安
2023-03-14

AuditReaderFactory只有两个静态方法。您可以自动装配SessionFactory对象或EntityMananger吗?看起来两者都可以为您提供您想要的东西,即访问AuditReader。

AuditReaderFactory.get(sessionFactory.getCurrentSession())

编辑这篇文章有一些细节或接线SessionFactory如果需要

终安和
2023-03-14

跟进上面的答案,并链接问题,我发现这是工作。(如果这可以直接变成读者的自动连线,那就太好了)

@Autowired
private EntityManagerFactory factory;

public void stuff() {
    AuditReader audit = AuditReaderFactory.get(factory.createEntityManager());
}
南门承教
2023-03-14

创建配置类,如AuditConfiguration。java:

import org.hibernate.envers.AuditReader;
import org.hibernate.envers.AuditReaderFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.persistence.EntityManagerFactory;

@Configuration
public class AuditConfiguration {

    private final EntityManagerFactory entityManagerFactory;

    AuditConfiguration(EntityManagerFactory entityManagerFactory) {
        this.entityManagerFactory = entityManagerFactory;
    }

    @Bean
    AuditReader auditReader() {
        return AuditReaderFactory.get(entityManagerFactory.createEntityManager());
    }
}

之后,您可以在组件类中自动连接AuditReader。

 类似资料:
  • 我有Kafka Streams java应用程序启动并运行。我试图使用KSQL创建简单的查询,并使用Kafka流来实现复杂的解决方案。我希望将KSQL和Kafka流作为Java应用程序运行。 我打算通过https://github.com/confluentinc/ksql/blob/master/ksqldb-examples/src/main/java/io/confluent/ksql/em

  • 问题内容: 只是一个简单的问题:是否可以从c / c ++调用Java函数? 问题答案: 是的,你可以,但是它有点令人费解,并且以反射/非类型安全的方式工作(示例使用的C ++ API比C版本更干净)。在这种情况下,它将从C代码中创建Java VM的实例。如果首先从Java调用你的本机调用,则无需构造VM实例 编译(在Ubuntu上): 注意:为了实现正确的错误处理,应检查每种方法的返回代码(为方

  • 我的问题很简单,也很直观,但几个星期都解决不了。 我在Windows8上使用Docker。(当然是Docker工具箱+VirtualBox)。我把图像推到Docker Hub并使用Kitematic部署R shiny应用程序。 上面的图片显示它正在运行,但我无法通过给定的Docker机器IP 192.168.99.100:32772访问它

  • 要获取请求URL,可以在堆栈溢出中找到以下方法。 第一种方法: 第二种方法: 第三种方法: 我不知道在spring boot应用程序中使用哪一个来获取请求URL。 如果我使用第三种方法,那么我是否需要在配置类中创建RequestContextListener的bean,如下所示?

  • 问题内容: 我想使用Play Framework 2.4 中的Guice 类的方法,如何访问它? 我已经使用Guice 实现了一个工厂,该工厂在运行时返回了另一个工厂!在返回工厂的第二层,我需要访问Play Guice Injector以使用反射而不是注释来手动获取对象。 问题答案: 有很多方法。我用这个。 编辑:这与<= 2.4的Play版本有关: 要么 对于> = 2.5的版本:

  • 我想在intellij Idea中以调试模式启动spring-boot maven应用程序,但当我创建断点时,应用程序不会挂起,而是会继续。我读了很多题目,但还是不明白怎么做。你能帮我决定最好的行动方案吗。 但是当请求LocalHost:5005/MyPage时,我会出现错误101(NET::ERR_CONNECTION_RESET)。似乎有些maven参数没有指定。 下面是我在pom.xml中的