使用Spring Boot在应用程序启动时在null中定义的'jpaAuditingHandler'

时间:2018-12-14 22:12:57

标签: spring spring-boot spring-data-jpa

从2.0.5升级到Spring Boot 2.1之后,在应用程序启动时出现以下错误:

以null定义的bean'jpaAuditingHandler'无法注册。具有该名称的bean已被定义为null,并且禁用了覆盖。

如果我在application.yaml中指定以下内容,该错误将得到解决:

spring:
  main:
    allow-bean-definition-overriding: true

这个allow-bean-definition-overriding有什么作用?

此外,我不想启用该功能。如何配置“ jpaAuditingHandler”以解决此错误

2 个答案:

答案 0 :(得分:7)

如果您的Spring配置文件中有多个@EnableJpaAuditing声明,则会出现此错误。只需声明一次即可。

答案 1 :(得分:1)

我开发了一个库,需要@EnableJpaAuditing。用户可以拥有自己的@Configuration类,可以声明@EnableJpaAuditing。由于一个上下文中有多个@EnableJpaAuditing,这将导致应用程序上下文失败。

因此,只有在用户上下文尚未声明@EnableJpaAuditing时,我们才必须声明@Configuration

幸运的是,Spring Boot允许在上下文中使用条件。

下一个解决方案(在Kotlin中)是@EnableJpaAuditing,仅当未应用@Configuration @ConditionalOnMissingBean(name=["jpaAuditingHandler"]) @EnableJpaAuditing class JpaAuditingNonConflictingDeclaration 时才应用。

@types/