当前位置: 首页 > news >正文

Spring Boot 3 数据源连接信息存储方法

在Spring Boot 3中,数据源连接信息的存储方式主要有以下几种,根据安全性和环境需求选择合适的方式:

1. 配置文件(推荐基础方式)

位置src/main/resources/application.properties 或 application.yml
示例

properties

# application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

yaml

# application.yml
spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: secretdriver-class-name: com.mysql.cj.jdbc.Driver

2. 环境变量(安全,适合生产)

场景:避免在代码库中硬编码敏感信息
用法

bash

# 启动时注入环境变量
export SPRING_DATASOURCE_URL="jdbc:mysql://prod-db:3306/prod_db"
export SPRING_DATASOURCE_USERNAME="admin"
export SPRING_DATASOURCE_PASSWORD="secure-pwd"
java -jar your-app.jar
  • Spring Boot会自动读取 SPRING_DATASOURCE_* 环境变量。

3. 加密配置(增强安全性)

使用Jasypt加密

  1. 添加依赖:

    xml

    <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version>
    </dependency>
  2. 加密密码(使用Jasypt工具):

    bash

    java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI \input="secret" password=masterKey algorithm=PBEWithMD5AndDES
    # 输出:加密后的字符串(如:ENC(AbCdEfGh123...))
  3. 在配置中使用加密值:

    properties

    spring.datasource.password=ENC(AbCdEfGh123...)
    jasypt.encryptor.password=masterKey  # 通过环境变量注入更安全

4. 云平台密钥管理(生产级安全)

AWS Secrets Manager / Azure Key Vault 等

  • Spring Cloud整合(示例:AWS):

    java

    @Configuration
    public class DataSourceConfig {@Value("${db.secret.arn}") String secretArn;@Beanpublic DataSource dataSource(SecretsManagerClient client) {GetSecretValueResponse response = client.getSecretValue(GetSecretValueRequest.builder().secretId(secretArn).build());// 解析JSON密钥(如:{"username":"user", "password":"pwd"}")return DataSourceBuilder.create().url(url).username(user).password(pwd).build();}
    }

5. Profile多环境隔离

按环境拆分配置

  • application-dev.properties(开发环境)

    properties

    spring.datasource.url=jdbc:mysql://localhost:3306/dev_db
  • application-prod.properties(生产环境)

    properties

    spring.datasource.url=jdbc:mysql://prod-server:3306/prod_db

激活Profile

bash

java -jar your-app.jar --spring.profiles.active=prod

6. 自定义配置类(高级场景)

java

@Configuration
public class DataSourceConfig {@Bean@ConfigurationProperties(prefix = "app.datasource") // 绑定自定义前缀public DataSource dataSource() {return DataSourceBuilder.create().build();}
}

配置

yaml

app:datasource:url: "jdbc:postgresql://localhost:5432/mydb"username: custom_userpassword: custom_pwd

📌 最佳实践建议:

场景推荐方式优点
本地开发application.properties简单快捷
生产环境环境变量 + 配置加密避免敏感信息泄露
云部署云平台密钥管理服务自动轮转密钥,最高安全性
多环境Profile隔离配置环境配置分离,管理清晰

安全注意事项:

  1. 永远不要提交敏感信息到代码仓库(使用.gitignore忽略配置)。

  2. 生产环境密码务必加密或使用外部注入(如Kubernetes Secrets)。

  3. 限制数据库访问IP,使用最小权限账号。

通过以上方式,Spring Boot 3能灵活安全地管理数据源连接信息。

http://www.lryc.cn/news/618336.html

相关文章:

  • 蓝牙隐私保护机制:面试高频考点与真题解析
  • 多奥电梯智能化解决方案的深度解读与结构化总结,内容涵盖系统架构、功能模块、应用场景与社会价值四大维度,力求全面展示该方案的技术先进性与应用前景。
  • 线缆桥架、管道设计规范详解
  • C++中template、 implicit 、explicit关键字详解
  • Linux线程——对线程库简单的面向对象封装
  • KAQG:一种用于生成难度可控问题的知识图谱的增强的RAG系统(论文大白话)
  • 无人机影像的像素坐标转大地坐标
  • Spring Boot项目使用WebClient调用第三方接口详细教程
  • 【Redis与缓存预热:如何通过预加载减少数据库压力】
  • 如何在 Ubuntu 24.04 LTS Linux 中安装 JSON Server
  • 跟李沐动手学深度学习---学习笔记之基础篇
  • 一个基于 PyTorch 的完整模型训练流程
  • 【测试】Bug+设计测试用例
  • MR一体机(VST)预算思路
  • 如何实现PostgreSQL的高可用性,包括主流的复制方案、负载均衡方法以及故障转移流程?
  • 深入理解机器学习之TF-IDF:文本特征提取的核心技术
  • 防御保护11
  • windows版本:Prometheus+Grafana(普罗米修斯+格拉法纳)监控 JVM
  • 《Redis集群故障转移与自动恢复》
  • Myqsl建立库表练习
  • 零基础渗透测试全程记录(打靶)——Prime
  • linux远程部署dify和mac本地部署dify
  • java python
  • c#联合Halcon进行OCR字符识别(含halcon-25.05 百度网盘)
  • Docker 101:面向初学者的综合教程
  • Go 语言中的结构体、切片与映射:构建高效数据模型的基石
  • 五、Nginx、RabbitMQ和Redis在Linux中的安装和部署
  • Homebrew 入门教程(2025 年最新版)
  • docker-compose搭建 redis 集群
  • ETCD的简介和使用