Spring Boot最大的特点就是自动配置了,大大的减少了传统Spring框架的繁琐配置,通过几行简单的配置就可以完成其他组件的接入。比如你想要连接mysql数据库,只需要的配置文件里面加入mysql的一些配置信息就可以了。为了保护数据的安全性,越来越多的公司选择加密这些重要信息。接下来一起来看看如何实现配置加密文件并且成功连接数据库的。

配置信息加密有好几种方式,这里我只详细的写一下我比较常用的一种方式。首先通过某种加密算法将用户名和密码进行加密,然后在配置文件中用加密串代替原来的明文。然后自定义数据源,在自定义数据源中解密用户名和密码。

SpringBoot自动装配

SpringBoot的自动装配,以前的推文中也详细的讲到过,今天简单来复习一下。在每个Spring Boot的应用的启动类上都能发现有一个注解@SpringBootApplication,这个注解包含的注解@EnableAutoConfiguration就是用来完成自动装配的。这个注解通过导入类AutoConfigurationImportSelector,这个类中有一个方法selectImports,其作用就是扫描所有jar包中的META-INF/spring.factories文件,去加载里面的具体实现类,完成自动装配。

spring-boot-autoconfigurejar包的META-INF/spring.factories文件中指定了一个类用来加载数据库配置信息,这个类就是org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

自定义数据源

这里使用HikariDataSource作为自定义的数据源,自定义的数据源目的就是为了解密配置文件中的配置信息。

@Configuration
public class DataSourceConfiguration { @Autowired
DataSourceProperties properties; @Bean
public DataSource dataSource() throws Exception{
String username = Des3.decryptThreeDESECB(properties.getUsername(),Des3.DES3KEY);
String password = Des3.decryptThreeDESECB(properties.getPassword(),Des3.DES3KEY);
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName(properties.getDriverClassName());
dataSource.setJdbcUrl(properties.getUrl());
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}

配置文件信息如下:

spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/xxx
username: aMkeRCLWqNw=
password: rq-fzucH32I=

具体的加解密算法这里就不在提及了,根据具体要求选择一种可逆的加密算法就可以了,如果还不是很了解加密算法的种类,可以参考我以前写的一篇文章——面试官:说一下你常用的加密算法

此是spring-boot-route系列的第十一篇文章,这个系列的文章都比较简单,主要目的就是为了帮助初次接触Spring Boot 的同学有一个系统的认识。本文已收录至我的github,欢迎各位小伙伴star

githubhttps://github.com/binzh303/spring-boot-route

点关注、不迷路

如果觉得文章不错,欢迎关注点赞收藏,你们的支持是我创作的动力,感谢大家。

如果文章写的有问题,请不要吝啬,欢迎留言指出,我会及时核查修改。

如果你还想更加深入的了解我,可以微信搜索「Java旅途」进行关注。回复「1024」即可获得学习视频及精美电子书。每天7:30准时推送技术文章,让你的上班路不在孤独,而且每月还有送书活动,助你提升硬实力!

spring-boot-route(十一)数据库配置信息加密的更多相关文章

  1. Spring Boot实战之数据库操作

    上篇文章中已经通过一个简单的HelloWorld程序讲解了Spring boot的基本原理和使用.本文主要讲解如何通过spring boot来访问数据库,本文会演示三种方式来访问数据库,第一种是Jdb ...

  2. Spring Boot初探之数据库访问

    一.背景 Spring boot是集服务发布.数据库管理.日志管理等于一身的服务开发框架:是微服务开发的全能小帮手.这章讲述一下如何使用spring boot访问MySQL数据库. 二.搭建基础环境 ...

  3. Spring Boot入门教程2-1、使用Spring Boot+MyBatis访问数据库(CURD)注解版

    一.前言 什么是MyBatis?MyBatis是目前Java平台最为流行的ORM框架https://baike.baidu.com/item/MyBatis/2824918 本篇开发环境1.操作系统: ...

  4. Spring Boot(二):数据库操作

    本文主要讲解如何通过spring boot来访问数据库,本文会演示三种方式来访问数据库,第一种是JdbcTemplate,第二种是JPA,第三种是Mybatis.之前已经提到过,本系列会以一个博客系统 ...

  5. spring boot +mybatis(通过properties配置) 集成

    注:日常学习记录贴,下面描述的有误解的话请指出,大家一同学习. 因为我公司现在用的是postgresql数据库,所以我也用postgresql进行测试 一.前言 1.Spring boot 会默认读取 ...

  6. 195. Spring Boot 2.0数据库迁移:Flyway

    [视频&交流平台] àSpringBoot视频:http://t.cn/R3QepWG à SpringCloud视频:http://t.cn/R3QeRZc à Spring Boot源码: ...

  7. 使用spring boot访问mongodb数据库

    一. spring boot中传参的方法 1.自动化配置 spring Boot 对于开发人员最大的好处在于可以对 Spring 应用进行自动配置.Spring Boot 会根据应用中声明的第三方依赖 ...

  8. 【spring boot】spring boot中使用定时任务配置

    spring boot中使用定时任务配置 =============================================================================== ...

  9. Spring Boot 2.X(十六):应用监控之 Spring Boot Actuator 使用及配置

    Actuator 简介 Actuator 是 Spring Boot 提供的对应用系统的自省和监控功能.通过 Actuator,可以使用数据化的指标去度量应用的运行情况,比如查看服务器的磁盘.内存.C ...

  10. Spring Boot开启Druid数据库监控功能

    Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目.Druid支持所有JDBC兼容的数据库,包括Oracle.MySQL.Derby.PostgreSQL.SQL Server.H2等.D ...

随机推荐

  1. ios bug 分析

    ios中线上或者内部测试bug统计收集有两种方法: 1)使用第三方bug收集 1.bugHD 来源http://bughd.com/doc/ios-customize 2.bugtags 来源http ...

  2. codewars贪吃蛇算法题目

    有这样一个题目: Given an n x n array, return the array elements arranged from outermost elements to the mid ...

  3. tcpdump 命令格式

    tcpdump 命令格式 tcpdump [选项] [表达式 1. 选项 常用选项: -i : 网卡名: 指定网卡,默认抓取系统第一个网卡 -n : 对地址以数字方式显示 -nn :对地址端口以数字方 ...

  4. JVM学习第一天(虚拟机的前世今生与与Java的内存区域)

    其实说JVM的时候有很多人会懵, 也很不理解,我会写Java代码就可以了,我干嘛要学这个,其实不是的,学习JVM是很有必要性的; 为什么要了解JVM 1:写出更好,更健壮的Java程序; 2:提高Ja ...

  5. whlie do-whlie

    switch语句  用于根据多个不同条件执行不同动作.   while 循环         while循环基本语法:    条件初始化;   while(条件表达式){     //条件表达式就是判 ...

  6. 《Redis内存数据库》Redis环境搭建

    前言 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多 ...

  7. HTML -- 表单元素1

    HTML 表单用于搜集不同类型的用户输入. 一.<form> 标签 <form> 标签用于为用户输入创建 HTML 表单. 表单能够包含 input 元素,比如文本字段.复选框 ...

  8. TNFE-Weekly[第七十二周已更新]

    前端行业发展飞速,新技术如雨后春笋般快速出现,尤其是各种小程序陆续推出,相关的信息.文章也铺天盖地的遍布在各处,我们有时候会困惑,不知道哪些信息对于自己是有价值的,那么TNFE-腾讯新闻前端团队启动了 ...

  9. 总结SUMMARY

    Summary 多线程 多线程 pthread NSThread 创建线程的方式 NSThread 的 Target 线程状态 线程属性 资源共享 原子属性 线程间通讯 GCD 同步 & 异步 ...

  10. 月薪20k的java面试题他来了

    1.场景描述 最近有朋友私信,说网上的面试资料有点散,还有些过时的,问老王能否帮忙整理下,老王晚上刚好有空,就给梳理了下,分享给大家. 2.解决方案 2.1 说明 (1)面试的题目多数是从网上找的,老 ...