从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”以解决此错误
答案 0 :(得分:7)
如果您的Spring配置文件中有多个@EnableJpaAuditing
声明,则会出现此错误。只需声明一次即可。
答案 1 :(得分:1)
我开发了一个库,需要@EnableJpaAuditing
。用户可以拥有自己的@Configuration
类,可以声明@EnableJpaAuditing
。由于一个上下文中有多个@EnableJpaAuditing
,这将导致应用程序上下文失败。
因此,只有在用户上下文尚未声明@EnableJpaAuditing
时,我们才必须声明@Configuration
。
幸运的是,Spring Boot允许在上下文中使用条件。
下一个解决方案(在Kotlin中)是@EnableJpaAuditing
,仅当未应用@Configuration
@ConditionalOnMissingBean(name=["jpaAuditingHandler"])
@EnableJpaAuditing
class JpaAuditingNonConflictingDeclaration
时才应用。
@types/