Я вернулся к программированию своей старой программы https://github.com/JonkiPro/REST-Web-Services. Я обновил Spring Boot с версии 15.6 до версии 2.0.0. Я столкнулся со многими проблемами при компиляции, но не могу с ними справиться. Ну во время компиляции он меня в консоль кидает
2018-03-18 21:54:53.339 ERROR 3220 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : HikariPool-1 - jdbcUrl is required with driverClassName.
2018-03-18 21:54:55.392 INFO 3220 --- [ost-startStop-1] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'unit'
2018-03-18 21:54:56.698 INFO 3220 --- [ost-startStop-1] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'unit'
2018-03-18 21:54:56.778 ERROR 3220 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig : HikariPool-1 - jdbcUrl is required with driverClassName.
2018-03-18 21:54:56.782 ERROR 3220 --- [ost-startStop-1] o.s.b.web.embedded.tomcat.TomcatStarter : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'webSecurityConfig': Unsatisfied dependency expressed through field 'userDetailsService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userDetailsService' defined in file [C:\Users\Jonatan\Documents\GitHub\REST-Web-Services\web\out\production\classes\com\web\web\security\service\impl\UserDetailsServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#65d6e77b' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#65d6e77b': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': Post-processing of FactoryBean's singleton object failed; nested exception is java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.
2018-03-18 21:54:56.821 WARN 3220 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
У меня никогда не было такой ошибки. Я не знаю полностью, что это значит. Мои свойства для базы выглядят так
spring:
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql:database
username: root
password: root
schema: classpath:/db/init/schema.sql
Я не знаю, как бороться с этой ошибкой. Программирую довольно давно, но впервые встречаюсь с концепцией hikari. Я использую сервер Tomcat (в Spring Boot) и базу данных PostgreSQL.
Нет. jdbc.postgresql.org/documentation/80/connect.html Кроме того, он работал до изменения версии Spring Boot.
ОК. Одна из возможностей заключается в том, что переменные конфигурации не выбираются.
Это не текущая версия программы, но очень похожая на github.com/JonkiPro/REST-Web-Services/blob/master/web/src/ma в /…. У меня есть только эта конфигурация для базы данных. Можно как-нибудь настроить эти хикари? Я никогда об этом не слышал.
Просто отбросьте свойство driver-class-name. Spring Boot определит класс драйвера только по URL-адресу.




У меня была такая же проблема в другом контексте. С 79. Доступ к данным - настройка настраиваемого источника данных.
if you happen to have Hikari on the classpath, this basic setup does not work, because Hikari has no url property (but does have a jdbcUrl property)
Hikari - это пул по умолчанию в Spring Boot 2.
так что вы можете заменить конфиг
url: jdbc:postgresql:database -> jdbc-url: jdbc:postgresql:database
или вы можете сохранить конфигурацию, но вам нужно определить другой Bean для обработки сопоставления (псевдонимы)
@Bean
@Primary
@ConfigurationProperties("app.datasource")
public DataSourceProperties dataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("app.datasource")
public DataSource dataSource(DataSourceProperties properties) {
return properties.initializeDataSourceBuilder().
.build();
}
Решил проблему для меня, у меня есть 2 источника данных, и в моих свойствах я просто заменил, например, app.datasource1.url на app.datasource1.jdbc-url
Также вы можете посмотреть здесь, чтобы увидеть другой подход к созданию источника данных: baeldung.com/hikaricp#1-creating-a-datasource
Удалите свойство spring.datasource.driver-class-name или переименуйте свойство spring.datasource.url в spring.datasource.jdbc-url.
Об этом сообщается в вашей ошибке:
java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName
Первый вариант выглядит более чистым, и Spring Boot определит имя класса драйвера по умолчанию на основе значения свойства spring.datasource.url (см. Класс org.springframework.boot.jdbc.DatabaseDriver, если вы хотите отладить это).
Разве ваш URL-адрес не должен выглядеть примерно так: jdbc: postgresql: // host: 5432 / db