java - 如何配置 Spring Boot 数据源部分以在生产中使用?

标签 java spring spring-boot datasource production-environment

我正在第一份工作中编写我的第一个“真正的”应用程序。我可以使用 Spring Boot 部署我的应用程序,它工作得很好。我怀疑的一件事是数据源配置部分。现在我在 application.properties 文件中写入所有数据源配置:

spring.datasource.url = jdbc:postgresql://10.60.6.34:5432/postgres
spring.datasource.username = *username*
spring.datasource.password = *password*
spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQL94Dialect

就是这样!我还应该做些什么来准备我的应用程序生产?连接池和所有这些东西怎么样? (我不太熟悉所有数据源配置的东西)提前致谢!

最佳答案

所以 Joe W 没有错 - 配置文件是处理此问题的一种好方法。但是,我建议改为使用环境变量来处理该问题。这将使您的应用程序不仅兼容所有操作系统(配置文件也将兼容),而且还允许您更轻松地在 Docker(容器)中运行它。无论如何,您都需要做一些这样的事情,因为配置文件仍然需要您指定正在运行的配置文件,您需要使用环境变量来完成。

对您来说幸运的是,Spring Boot 自动连接环境变量,无需您进行额外的工作。您可以在这里阅读更多相关信息:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

在处理环境变量时,您使用下划线而不是句点,因此您的配置将如下所示:

SPRING_DATASOURCE_URL = jdbc:postgresql://10.60.6.34:5432/postgres
SPRING_DATASOURCE_USERNAME = *username*
SPRING_DATASOURCE_PASSWORD = *password*
SPRING_JPA_HIBERNATE_DDL_AUTO = update
SPRING_JPA_PROPERTIES_HIBERNATE_DIALECT = org.hibernate.dialect.PostgreSQL94Dialect

然后您可以将环境变量设置为您想要的任何值,并且您无需担心为每台服务器引入新的配置文件。此外,由于环境变量在层次结构中高于基于文件的配置,因此您可以单独保留当前基于文件的配置(如果您愿意),您的环境变量将在部署时覆盖它们。

围绕您的连接池,这将在很大程度上取决于您的后备 servlet 容器(即 tomcat 与其他容器)和后备数据库(看起来像 postgres)。我建议您查看 tomcat-jdbc 与 Spring boot 的用法,这将允许您在 Spring 的环境变量中配置诸如最大连接池等内容。

关于java - 如何配置 Spring Boot 数据源部分以在生产中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50914001/

相关文章:

java - HiveQLWhere错误: cannot find symbol

java - NetBeans 发出消息 'command line is too long'

java - 在一个方法中多次模拟 Calendar.getInstance 静态方法

java - 速度模板适合评估条件吗?

java - spring boot集成测试时如何正确连接testcontainers redis?

spring-boot - Swagger 的HK2服务修改失败

java - 无法在 Windows 7 x64 上使用 gradle 构建 spring 框架

java - 如何使用类路径通过 Liquibase 回滚数据库更改

java - Spring MVC : Transactional annotation

spring - grails 3 约束异常