如何在 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 配置中显式传递数据库名称?的主要内容,如果未能解决你的问题,请参考以下文章

spring03

3.Spring自动装配

如何在 GDAL ruby​​ 绑定中显式关闭数据集?

Bean的自动装配

Spring5Bean 的自动装配及注解开发

Spring之Bean的自动装配