2016-09-05 8 views
1

Контекст

Я использовал @TypeName("Employee") для моих сущностей, так что я могу потерять полное TypeName в БД. Он работает так, как ожидалось.JaversSqlAutoConfiguration.javers() не вызывался

Выпуск

Когда приложение Spring загрузки перезапускается и там существующие журналы аудита, я получаю TYPE_NAME_NOT_FOUND исключение, когда я ударил javers.findSnapshots()

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.
  • Затем я добавил scanTypeName(Employee.class) в MyJaversSqlAutoConfiguration.javers().

Наблюдение

  • Я заметил MyJaversSqlAutoConfiguration.javers(connectionProvider) не попасть. Однако org.javers.spring.boot.sql.JaversSqlAutoConfiguration.javers() попадает в режим отладки. commitPropertiesProvider() и springSecurityAuthorProvider() в MyJaversSqlAutoConfiguration' gets hit. But not MyJaversSqlAutoConfiguration.javers (ConnectionProvider connectionProvider) `.

При ближайшем рассмотрении, я обнаружил, что org.javers.spring.boot.sql.JaversSqlAutoConfiguration.javers() не @ConditionalOnMissingBean но commitPropertiesProvider() и springSecurityAuthorProvider() делать.

Вопрос

Есть рабочий пример этого scanTypeName() где-то или мы должны добавить @ConditionalOnMissingBean?

ответ

0

Похоже, @ConditionalOnMissingBean отсутствует в javers bean defintions (in javers-spring-boot-starters).

Он может быть добавлен к JaversSqlAutoConfiguration.java и JaversMongoAutoConfiguration.java

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

Если вы внести PR, мы будем объединять его.

Смежные вопросы