#spring-boot #derby
#весенняя загрузка #дерби
Вопрос:
Во время цикла обновлений SOUP в приложении Spring Boot я перенес Apache Derby с 10.14.1.0 на 10.15.1.3. Теперь тесты завершаются неудачей с этой красотой (обрезанный, полный стек здесь):
Failed to load ApplicationContext
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration':
Unsatisfied dependency expressed through constructor parameter 0
Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'dataSource':
Invocation of init method failed
Caused by: java.lang.IllegalStateException:
Failed to replace DataSource with an embedded database for tests.
If you want an embedded database please put a supported one on the
classpath or tune the replace attribute of @AutoConfigureTestDatabase.
Что здесь происходит? Нужно ли мне изменять какую-либо конфигурацию?
Ответ №1:
Для Apache Derby требуется Java 9 с версии 10.15.x, на которой Spring Boot в настоящее время не поддерживается.
См. Также spring-boot # 16433.
Ответ №2:
Я просто хочу ответить, что мне потребовалось, чтобы заставить Derby 15.2.0 работать с Spring Boot 2.4.4 с derby во встроенном режиме поверх Java 11. Весенняя загрузка 2.4.4 работает из коробки с Derby 14, хотя вы получите некоторое предупреждение при запуске весенней загрузки. Обновление apache derby до 15.2.0 исправило это для меня.
В pom определены зависимости derby и derbytools:
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.15.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbytools</artifactId>
<version>10.15.2.0</version>
</dependency>
Затем в файле свойств вашего приложения:
spring.datasource.driver-class-name=org.apache.derby.iapi.jdbc.AutoloadedDriver
Вместо: spring.datasource.driver-class-name=org.apache.derby.jdbc.EmbeddedDriver
После этого я получаю хороший запуск Spring Boot без каких-либо предупреждений или чего-либо, что вызывает беспокойство.