Я не могу использовать конфигурационные переменные, которые я установил в Spring Boot Application. Все работает нормально, если жестко закодировать учетные данные моей базы данных в application.properties, но он не может обнаружить переменные, когда я пытаюсь получить их из конфигурационных переменных.
Мой файл application.properties:
spring.datasource.hikari.connection-timeout=20000
spring.datasource.hikari.maximum-pool-size=5
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=${SPRING_DATASOURCE_URL}
spring.datasource.username=my_username
spring.datasource.password=my_password
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
результат команды heroku config
:
=== danef-dictionary-api Config Vars
DATABASE_URL: postgres://my_username:my_password@host_name:port/db_name
PAPERTRAIL_API_TOKEN: papertrail_api_token
SPRING_DATASOURCE_URL: jdbc:postgresql://host_name:port/db_name
pom. xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>net.danef</groupId>
<artifactId>danef-dictionary-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>danef-dictionary-api</name>
<description>Danef Dictionary API</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
результат heroku local web
:
2:12:45 PM web.1 | . ____ _ __ _ _
2:12:45 PM web.1 | /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
2:12:45 PM web.1 | ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
2:12:45 PM web.1 | \\/ ___)| |_)| | | | | || (_| | ) ) ) )
2:12:45 PM web.1 | ' |____| .__|_| |_|_| |_\__, | / / / /
2:12:45 PM web.1 | =========|_|==============|___/=/_/_/_/
2:12:45 PM web.1 | :: Spring Boot :: (v2.2.2.RELEASE)
2:12:50 PM web.1 | 2020-01-19 14:12:50.528 WARN 22646 --- [ main] o.s.boot.StartupInfoLogger : InetAddress.getLocalHost().getHostName() took 5004 milliseconds to respond. Please verify your network configuration (macOS machines may need to add entries to /etc/hosts).
2:12:55 PM web.1 | 2020-01-19 14:12:55.540 INFO 22646 --- [ main] net.danef.DanefDictionaryApiApplication : Starting DanefDictionaryApiApplication on MacBook-Pro.local with PID 22646 (/Users/sametsahin/STS/danef-dictionary-api/target/classes started by sametsahin in /Users/sametsahin/STS/danef-dictionary-api)
2:12:55 PM web.1 | 2020-01-19 14:12:55.543 INFO 22646 --- [ main] net.danef.DanefDictionaryApiApplication : No active profile set, falling back to default profiles: default
2:12:56 PM web.1 | 2020-01-19 14:12:56.557 INFO 22646 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2:12:56 PM web.1 | 2020-01-19 14:12:56.674 INFO 22646 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 98ms. Found 1 JPA repository interfaces.
2:12:57 PM web.1 | 2020-01-19 14:12:57.252 INFO 22646 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2:12:57 PM web.1 | 2020-01-19 14:12:57.866 INFO 22646 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2:12:57 PM web.1 | 2020-01-19 14:12:57.888 INFO 22646 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2:12:57 PM web.1 | 2020-01-19 14:12:57.889 INFO 22646 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.29]
2:12:58 PM web.1 | 2020-01-19 14:12:58.195 INFO 22646 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2:12:58 PM web.1 | 2020-01-19 14:12:58.195 INFO 22646 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2575 ms
2:12:58 PM web.1 | 2020-01-19 14:12:58.730 INFO 22646 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2:12:58 PM web.1 | 2020-01-19 14:12:58.972 INFO 22646 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.4.9.Final}
2:12:59 PM web.1 | 2020-01-19 14:12:59.226 INFO 22646 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2:12:59 PM web.1 | 2020-01-19 14:12:59.379 INFO 22646 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2:12:59 PM web.1 | 2020-01-19 14:12:59.385 WARN 22646 --- [ main] o.h.e.j.e.i.JdbcEnvironmentInitiator : HHH000342: Could not obtain connection to query metadata : Driver org.postgresql.Driver claims to not accept jdbcUrl, ${SPRING_DATASOURCE_URL}
2:12:59 PM web.1 | 2020-01-19 14:12:59.407 INFO 22646 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect
2:13:00 PM web.1 | 2020-01-19 14:13:00.368 INFO 22646 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2:13:00 PM web.1 | 2020-01-19 14:13:00.397 WARN 22646 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException:
2:13:00 PM web.1 | > [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is java.lang.RuntimeException: Driver org.postgresql.Driver claims to not accept jdbcUrl, ${SPRING_DATASOURCE_URL}
2:13:00 PM web.1 | 2020-01-19 14:13:00.413 INFO 22646 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2:13:00 PM web.1 | 2020-01-19 14:13:00.485 INFO 22646 --- [ main] ConditionEvaluationReportLoggingListener :
2:13:00 PM web.1 | Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2:13:00 PM web.1 | 2020-01-19 14:13:00.500 ERROR 22646 --- [ main] o.s.boot.SpringApplication : Application run failed
2:13:00 PM web.1 | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is java.lang.RuntimeException: Driver org.postgresql.Driver claims to not accept jdbcUrl, ${SPRIN
2:13:00 PM web.1 | > G_DATASOURCE_URL}
2:13:00 PM web.1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1108) ~[spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868) ~[spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
2:13:00 PM web.1 | at net.danef.DanefDictionaryApiApplication.main(DanefDictionaryApiApplication.java:9) [classes/:na]
2:13:00 PM web.1 | Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is java.lang.RuntimeException: Driver org.postgresql.Driver claims to not accept jdbcUrl, ${SPRING_DATASOURCE_URL}
2:13:00 PM web.1 | at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:403) ~[spring-orm-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:378) ~[spring-orm-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1792) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | ... 16 common frames omitted
2:13:00 PM web.1 | Caused by: java.lang.RuntimeException: Driver org.postgresql.Driver claims to not accept jdbcUrl, ${SPRING_DATASOURCE_URL}
2:13:00 PM web.1 | at com.zaxxer.hikari.util.DriverDataSource.<init>(DriverDataSource.java:110) ~[HikariCP-3.4.1.jar:na]
2:13:00 PM web.1 | at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:320) ~[HikariCP-3.4.1.jar:na]
2:13:00 PM web.1 | at com.zaxxer.hikari.pool.PoolBase.<init>(PoolBase.java:109) ~[HikariCP-3.4.1.jar:na]
2:13:00 PM web.1 | at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:108) ~[HikariCP-3.4.1.jar:na]
2:13:00 PM web.1 | at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-3.4.1.jar:na]
2:13:00 PM web.1 | at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:43) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.tool.schema.internal.exec.ImprovedExtractionContextImpl.getJdbcConnection(ImprovedExtractionContextImpl.java:60) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.extractMetadata(SequenceInformationExtractorLegacyImpl.java:40) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.initializeSequences(DatabaseInformationImpl.java:65) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.<init>(DatabaseInformationImpl.java:59) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.tool.schema.internal.Helper.buildDatabaseInformation(Helper.java:155) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:96) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:184) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:73) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:320) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:462) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1237) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
2:13:00 PM web.1 | at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:391) ~[spring-orm-5.2.2.RELEASE.jar:5.2.2.RELEASE]
2:13:00 PM web.1 | ... 20 common frames omitted
[DONE] Killing all processes with signal SIGINT
2:13:00 PM web.1 Exited with exit code null
Я пробовал настройка параметров конфигурации в настройках моих приложений на веб-сайте Heroku, но это ничего не изменило.