Spring Boot + HikariCP - недетерминированная ошибка автоматической настройки источника данных - PullRequest
0 голосов
/ 18 мая 2018

На моем локальном компьютере, когда я запускаю одно из моих приложений Spring Boot 2.0.0 из IntelliJ, приложение периодически не запускается, и в консоли отображается следующее сообщение:

Сбой приложенияto Start

Описание:

Не удалось автоматически настроить источник данных: «spring.datasource.url» не указан, а встроенный источник данных не может быть настроен автоматически.

Причина: не удалось определить подходящий класс диска

Когда я получаю эту ошибку, при попытке запустить приложение снова (иногда) оно запускается.Поведение кажется недетерминированным.Иногда приложение запускается с первой попытки, иногда требуется несколько последовательных попыток.

Редактировать ----------------------------------------------------------------------------

Ошибка, по-видимому, вызвана тем, что приложение не может определить, какой профиль активен.Когда приложение не запускается, вывод журнала Spring сообщает «Не задан активный профиль, возвращаясь к профилям по умолчанию: по умолчанию».Когда приложение запускается успешно, вывод журнала регистрирует «Активны следующие профили: локальный, allowall», то есть профили, которые я установил в качестве активных в application.properties.

К сожалению, если Spring определит, какой профиль активен при запуске, для меня это бросок костей.

----------------------------------------------------------------------------------

Мое приложение настроено для использования spring-boot-starter-data-jpa и подключения к базе данных Postgres.Для пула соединений я использую HikariCP 2.7.8.

Ошибка консоли (см. Ниже) подразумевает, что Hikari не может загрузить источник данных.Поскольку эта ошибка недетерминированная, может, это зависит от порядка, в котором Spring создает бины при запуске?

Свойство spring.datasource.url определено в моем файле свойств локального приложения.Файл свойств приложения задает для свойства активного профиля пружины значение local.

Это мой файл application.properties

spring.profiles.active=local,permitall 
management.endpoints.web.base-path=/
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true

Это мой application-local.properties

spring.datasource.url=jdbc:postgresql://localhost/vms?currentSchema=vms
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update

Я не нашел образец неудач или успехов.Приветствуются любые идеи по решению или устранению этой проблемы.

Сообщение об ошибке консоли

2018-05-18 13: 53: 49.667 ОШИБКА 16228 --- [ost-startStop-1] osbweb.embedded.tomcat.TomcatStarter: Ошибка запуска контекста Tomcat.Исключение: org.springframework.beans.factory.BeanCreationException.Сообщение: ошибка создания компонента с именем 'servletEndpointRegistrar', определенного в ресурсе пути к классу

[org / springframework / boot / activate / autoconfigure / endpoint / web / ServletEndpointManagementContextConfiguration.class]: сбой создания экземпляра компонента с помощью метода фабрики;

вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: метод фабрики 'servletEndpointRegistrar' вызвал исключение;

вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'healthEndpoint', определенным в ресурсе пути к классу [org / springframework / boot / activate / autoconfigure / health / HealthEndpointConfiguration.class]:Не удалось создать экземпляр объекта с помощью фабричного метода;

вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.boot.actuate.health.HealthEndpoint]: фабричный метод 'healthEndpoint' вызвал исключение;

вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorAutoConfiguration ': не удалось создать экземпляр объекта;

Вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorAutoConfiguration $$;

вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем 'dataSource', определенным в ресурсе пути к классу [org / springframework / boot / autoconfigure / jdbc / DataSourceConfiguration $ Hikari.class]:Инстанцирование компонента с помощью фабричного метода не удалось;

вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [com.zaxxer.hikari.HikariDataSource]: метод фабрики 'dataSource' вызвал исключение;

вложенным исключением является org.springframework.boot.autoconfigure.jdbc.DataSourceProperties $ DataSourceBeanCreationException: не удалось определить подходящий класс драйвера

...