java - Spring Boot 如何知道 Heroku 的 DATABASE_URL 配置变量?

标签 java spring postgresql spring-boot heroku

短篇小说:

Spring Boot 究竟是如何解析 DATABASE_URL 配置变量的?在我的本地 PC 上设置同名的环境属性没有任何效果。涉及到Spring Boot库中的哪些类?在 DATABASE_URL 上进行全文搜索不会返回任何内容。

长话短说:

我最近向 Heroku 部署了一个简单的 Spring Boot + JPA 应用程序。我的 heroku 已经配置了 Postgres 附加组件。

在我的第一次部署期间,我只想确认应用程序是否正确构建和启动。但令我惊讶的是,该应用程序立即连接到在 Heroku 的 DATABASE_URL 配置变量中配置的 Postgres 数据库:

2018-11-30T09:28:51.054688+00:00 app[web.1]: 2018-11-30 09:28:51.054  INFO 4 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL95Dialect

这让我想到了上面已经发布的问题。

我正在使用 Spring boot 2.1.0.,一个由 simple app 创建的 Spring Initializr,带有 Web + JPA + H2 + PostgreSQLH2 包含在内,因为:

  • 我想使用嵌入式 H2 运行单元测试
  • 大多数时候,我想使用嵌入式 H2 在本地运行我的应用程序,但有时,我想切换到 Heroku 的 Postgres,以便我可以验证一些特定于数据库的内容(例如迁移)

最佳答案

Spring 不知道 DATABASE_URL(据我所知)。但它会检测并自动使用 Heroku Java 构建包在运行时设置的 SPRING_DATASOURCE_URL

您可以在 Connecting to Relational Databases on Heroku with Java 上的 Heroku 文档中阅读有关此环境变量的更多信息

关于java - Spring Boot 如何知道 Heroku 的 DATABASE_URL 配置变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53555422/

相关文章:

java - 我的伪 3D 程序正在绘制一个点而不是一条线

java - 如何扩展 Spring 注解 @Transactional

Spring @Transactional 在 JUnit 测试中不起作用?

postgresql - 警告 : concurrent delete in progress within table while creating index in big table in Postgres 9. 2

java - JodaTime:plusMonths(1) 两次不同于 plusMonths(2)

java - 通过 Google Cloud Endpoints 传输 BigDecimal 的异常(exception)情况

spring - 如何使用 Thymeleaf 模板从 Json 加载数据

java - 如何在 spring data solr 中搜索关键字作为忽略大小写?

postgresql - 在 OpenShift v3 上将 Postgresql 配置为服务

sql - 具有相同属性的 "list"的转置表