java - Spring Boot 如何知道 Heroku 的 DATABASE_URL 配置变量?
问题描述
短篇故事:
Spring Boot 究竟是如何解析DATABASE_URL
config var 的?在我的本地 PC 上设置具有相同名称的环境属性无效。涉及 Spring Boot 库中的哪些类?全文搜索DATABASE_URL
不返回任何内容。
很长的故事:
我最近向 Heroku 部署了一个简单的 Spring Boot + JPA 应用程序。我的 heroku已经配置了 Postgres 插件。
在我的第一次部署期间,我只想确认应用程序可以正确构建和启动。但令我惊讶的是,该应用程序立即连接到 Heroku 的DATABASE_URL
config var 中配置的 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.,这是一个由Spring Initializr创建的简单应用程序,带有+ + + 。包括在内,因为:Web
JPA
H2
PostgreSQL
H2
- 我想用嵌入式 H2 运行单元测试
- 大多数时候,我想用嵌入式 H2 在本地运行我的应用程序,但有时,我想切换到 Heroku 的 Postgres,这样我就可以验证一些特定于数据库的东西(例如迁移)
解决方案
Spring不知道DATABASE_URL
(据我所知)。但它确实会检测并自动使用SPRING_DATASOURCE_URL
Heroku Java buildpack 在运行时设置的 .
您可以在 Heroku 文档中阅读有关使用 Java 连接到 Heroku 上的关系数据库的更多信息
推荐阅读
- react-native - 我没有从这个 React Native 代码中得到“步骤”的价值
- c# - 无法在 Docker .NET 控制台客户端应用程序中分配请求的地址
- json - 从服务器获取我的应用程序的文本
- c# - 数据块中的异常处理
- linux - ubuntu 听不到 0.0.0.0
- android - 使用 Any 或 Generic 为函数定义多数据类型?
- android - 安卓模拟器。它可能完全删除 com.google.android.googlequicksearchbox?
- react-native - stopRecorder() 不起作用 - react-native-audio-recorder-player
- testing - Chef InSpec 检查 http 请求是否失败 [成功]
- c# - 纹理不可见的 3D 对象