JaversSqlAutoConfiguration.javers() not getting called



上下文

我已经为我的实体使用了@TypeName("Employee"),所以我可以在DB中丢失完全限定的TypeName。它按预期工作。

问题

当Spring启动应用程序重新启动并且存在现有审核日志时,当我命中javers.findSnapshots() 时,我会得到TYPE_NAME_NOT_FOUND异常

org.javers.common.exception.JaversException: TYPE_NAME_NOT_FOUND type name 'Employment' not found. If you are using @TypeName annotation, remember to register this class using JaversBuilder.scanTypeName(Class). See also https://github.com/javers/javers/issues/263

到目前为止我的方法

  • 我添加了JaversSqlAutoConfiguration.java,称之为MyJaversSqlAutoConfiguration
  • 然后我在MyJaversSqlAutoConfiguration.javers()中添加了scanTypeName(Employee.class)

观察

  • 我注意到MyJaversSqlAutoConfiguration.javers(connectionProvider)没有被击中。但是,org.javers.spring.boot.sql.JaversSqlAutoConfiguration.javers()在调试模式下会被击中。MyJaversSqlAutoConfiguration' gets hit. But not MyJaversSqlAutoConfiguration.javers(ConnectionProvider ConnectionProvider(中的commitPropertiesProvider((和springSecurityAuthorProvider((`

经过仔细检查,我发现org.javers.spring.boot.sql.JaversSqlAutoConfiguration.javers()没有@ConditionalOnMissingBean,但commitPropertiesProvider()springSecurityAuthorProvider()

问题

有这个scanTypeName((的工作示例吗?还是应该添加@ConditionalOnMissingBean?

看起来在javers bean定义中缺少@ConditionalOnMissingBean(在两个javers-spring-boot-starters中(。

可以添加到JaversSqlAutoConfiguration.javaJaversMongoAutoConfiguration.java

@Bean(name = "javers")
@ConditionalOnMissingBean
public Javers javers(ConnectionProvider connectionProvider) {
...

如果您贡献了PR,我们将合并它。

最新更新