如何在 Spring Boot 配置中显式传递数据库名称?
Posted
技术标签:
【中文标题】如何在 Spring Boot 配置中显式传递数据库名称?【英文标题】:How to pass database name explicitly in Spring Boot Configuration? 【发布时间】:2018-11-13 09:16:34 【问题描述】:我有一个 Spring Boot 应用程序,它连接到 Postgres 数据库。我在 application.properties 中将数据源 url 指定为 -
spring.datasource.url=jdbc:postgresql://:5432/mydb
jdbc url (jdbc:postgresql://:5432/) 实际上存储在我的应用程序能够读取的单独外部位置。因此,我只想在属性文件中指定数据库名称。
我不想将数据库名称作为某个环境变量传递,因为它不会改变。
我在这一点上卡住了很长一段时间,我怎样才能做到这一点?
【问题讨论】:
无论jdbc url (jdbc:postgresql://< server ip here >:5432/
在哪里出现,只需将数据库名称附加到该 url 字符串即可。如果它不会改变,那么在将数据库名称附加到 url 后你不应该遇到问题。
【参考方案1】:
将此添加到您的 application.properties 文件中
spring.jpa.hibernate.ddl-auto=create\update\none
spring.datasource.url=jdbc:postgresql://host:port/db
spring.datasource.username=username
spring.datasource.password=password
【讨论】:
Vikram...通过指定 spring.datasource.url=jdbc:postgresql://host:port/db .. 应用程序工作。请再次阅读问题以了解我想要如何实施。【参考方案2】:您是否尝试过使用 $var 语法,例如:
spring.datasource.url=jdbc:postgres://$server-ip:5432/mydb
见:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-placeholders-in-properties
【讨论】:
【参考方案3】:我终于以这种方式实现了它。
在我的应用程序中仅指定数据库名称并在单独的 Spring Boot 应用程序中创建 Datasource bean(以便它也可以在其他项目中重用)。
【讨论】:
以上是关于如何在 Spring Boot 配置中显式传递数据库名称?的主要内容,如果未能解决你的问题,请参考以下文章