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能灵活安全地管理数据源连接信息。

SpringBoot3使用Jasypt加密数据库用户名、密码等敏感信息_java_脚本之家

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93293.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

按键序列常用示例

按键序列常用示例 按键编码 基础按键对应编码 A-Z 原字符即可 KeyCodeSHIFTCTRL^ALT% 其他按键 KeyCodeBACKSPACE{BACKSPACE}, {BS}, or {BKSP}BREAK{BREAK}CAPS LOCK{CAPSLOCK}DEL or DELETE{DELETE} or {DEL}DOWN ARROW{DOWN}END{END}ENTER{ENTER} or ~ESC{ESC}HELP{HEL…

【LeetCode Solutions】LeetCode 热题 100 题解(36 ~ 40)

CONTENTS二叉树 - LeetCode 94. 二叉树的中序遍历&#xff08;简单&#xff09;二叉树 - LeetCode 104. 二叉树的最大深度&#xff08;简单&#xff09;二叉树 - LeetCode 226. 翻转二叉树&#xff08;简单&#xff09;二叉树 - LeetCode 101. 对称二叉树&#xff08;简单&…

数据处理分析环境搭建+Numpy使用教程

环境搭建 数据分析常用开源库 Numpy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库。是一个运行速度非常快的数学库&#xff0c;主要用于数组计算包含&#xff1a; 一个强大的N维数组对象 ndarray广播功能函数整合 C/C/Fortran 代码的工具线性代数、傅里叶变换、随机…

实战多屏Wallpaper壁纸显示及出现黑屏问题bug分析-学员作业

背景&#xff1a; 在大家看了上一篇google官方对于多屏壁纸这块的介绍后 安卓Wallpaper壁纸部分对多屏的支持-Google官方文档介绍 可能还是对于壁纸支持多屏这块没有相关的实战性的认知&#xff0c;所以本文就开始带大家来进行部分解读和实战。 壁纸多屏显示原理文档解读&a…

Vue插槽---slot详解

1、什么是 Vue 插槽&#xff1f;Vue 插槽&#xff08;Slot&#xff09;​​ 是 Vue 提供的一种非常强大且灵活的机制&#xff0c;用于实现&#xff1a;父组件向子组件传递一段模板内容&#xff08;HTML / 组件等&#xff09;&#xff0c;让子组件在指定位置动态渲染这些内容。可…

STM32 - Embedded IDE - GCC - 显著减少固件的体积

导言如上图所示&#xff0c;在编译器附加选项&#xff08;全局&#xff09;里添加--specsnano.specs&#xff0c;告诉编译器使用newlib-nano替代newlib去编译代码。 newlib vs. newlib-nano newlib 是 GNU ARM 工具链默认的 C 标准库&#xff0c;功能完整&#xff0c;但体积较大…

python的美食交流社区系统

前端开发框架:vue.js 数据库 mysql 版本不限 后端语言框架支持&#xff1a; 1 java(SSM/springboot)-idea/eclipse 2.NodejsVue.js -vscode 3.python(flask/django)–pycharm/vscode 4.php(thinkphp/laravel)-hbuilderx 数据库工具&#xff1a;Navicat/SQLyog等都可以 摘要&…

《Redis持久化机制对比与RDB/AOF调优方案》

&#x1f4da; Redis持久化机制对比与RDB/AOF调优方案 &#x1f9e0;前言 在生产环境中&#xff0c;Redis 常常被用作缓存&#xff0c;但在更多场景下&#xff0c;它还存储着核心业务数据&#xff08;如会话、订单、队列任务等&#xff09;。一旦 Redis 宕机、数据丢失&#…

eXtremeDB 医疗设备开发实战:从合规到实时,构建 EN62304 级数据管理系统

在医疗设备开发领域&#xff0c;数据管理的 “可靠性” 与 “合规性” 是不可逾越的红线 —— 监护仪心率数据的丢失可能延误诊断时机&#xff0c;胰岛素泵剂量记录的错误则直接威胁患者生命安全。eXtremeDB 凭借对 EN62304 标准的深度合规支持、硬实时数据处理能力及多层次安全…

linux 设备驱动的分层思想

一、 概述像这样的分层设计在linux的input、RTC、MTD、I2c、SPI、tty、USB等诸多类型设备驱动中屡见不鲜,下面对这些驱动进行详细的分析。二、 输入设备驱动输入设备&#xff08;如按键、键盘、触摸屏、鼠标等&#xff09;是典型的字符设备&#xff0c;其一般的工…

【嵌入式硬件实例】-555定时器驱动直流无刷电机

555定时器驱动直流无刷电机 文章目录 555定时器驱动直流无刷电机 1、555定时器介绍 2、BLDC,无刷直流电机 3、DRV10866 驱动器 4、硬件准备与接线 5、电路工作原理 在这个项目中,我们将使用 555 定时器 IC 和 DRV10866 驱动器 IC 制作 BLDC、无刷直流电机驱动电路。无刷电机可…

Helm 常用命令 + Bitnami 中间件部署速查表

文章目录一、Helm 常用命令速查表1.1. 仓库管理1.2. Chart 搜索1.3. 应用部署1.4. 应用管理二、Bitnami 常用中间件部署示例三、常用自定义参数&#xff08;values.yaml 配置项&#xff09;四、安装后的访问方式五、一键安装脚本 install-middleware.sh5.1. 完整脚本5.2. 使用方…

Ansible 自动化运维实战系列(六):Valut详解

Ansible 自动化运维实战系列&#xff08;六&#xff09;&#xff1a;Valut详解&#x1f4da; 系列导航一&#xff1a;概述二&#xff1a;命令1&#xff09;创建加密文件2&#xff09;加密已有文件3&#xff09;查看加密文件4&#xff09;编辑加密文件5&#xff09;解密文件6&am…

《探秘浏览器Web Bluetooth API设备发现流程》

网页若需与蓝牙设备通信,往往需依赖本地客户端或专用驱动程序作为中介,不仅增加了用户操作成本,也限制了Web应用在跨设备场景中的拓展。而Web Bluetooth API的出现,直接赋予了网页与低功耗蓝牙(BLE)设备对话的能力,从智能手环的健康数据同步,到智能家居设备的远程控制,…

Jenkins+Python自动化持续集成详细教程

Python接口自动化测试零基础入门到精通&#xff08;2025最新版&#xff09;Jenkins安装 ​ Jenkins是一个开源的软件项目&#xff0c;是基于java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件的持续…

C++面试——内存

一、简述堆和栈的区别维度栈&#xff08;Stack&#xff09;堆&#xff08;Heap&#xff09;生命周期随函数调用自动创建/销毁由程序员或垃圾回收器控制分配速度极快&#xff08;仅移动指针&#xff09;慢&#xff08;需查找空闲块、维护元数据&#xff09;空间大小较小&#xf…

UVM验证(三)—UVM机制(1)

目录 &#xff08;一&#xff09;Factory工厂机制 1. 工厂机制核心逻辑&#xff1a;“注册 - 创建 - 覆盖” 2. 代码映射&#xff1a;从概念到实现 3. 实验目标&#xff1a;用 dadd_fixen_driver 固定 data_en1 4. 工厂机制的价值&#xff1a;“灵活验证的基石” 5. 常见…

前往中世纪 送修改器(Going Medieval)免安装中文版

网盘链接&#xff1a; 前往中世纪 免安装中文版 名称&#xff1a;前往中世纪 送修改器&#xff08;Going Medieval&#xff09;免安装中文版 描述&#xff1a; 在Going Medieval的世界中&#xff0c;黑暗时代的社会已濒临崩溃。14世纪末瘟疫肆虐&#xff0c;全球95%的人口因…

Font Awesome 参考手册

Font Awesome 参考手册 引言 Font Awesome 是一个功能强大的图标库,它允许开发者通过简单的 CSS 类来添加图标到网页中。本手册旨在为开发者提供全面的 Font Awesome 使用指南,包括图标选择、样式定制以及常见问题解答。 图标选择 图标分类 Font Awesome 提供了多种类别…

源网荷储一体化零碳智慧工业园区建设

针对传统工业园区等电力消纳大户存在的供电模式单一、能源管理错杂、园区人员设备安全统筹不到位等诸多问题&#xff0c;通过AI分析及物联网等新技术和自研交直流关键设备的应用&#xff0c;在三维场景中构建集智慧能源、智慧安防、碳排放管理及智慧运营等功能于一体的新型零碳…