Spring Boot 动态设置数据库密码,密码加密,密码单独处理
网上好多处理动态密码或密码加密都是用 【 jasypt 】与 阿里的 【 Druid 】,但这些都无办法满足大部份的公司的安全要求,很多公司要求密码单独方在服务器上的一个地方,并且文件或者密码字符串被加密。在这样的需求下,密码的处理都必须要程序员自己在程序中进行处理,以下两种方式是折腾多天后的可行的两种处理方法。
密码直接放在一个类里面,大家想如何处理就如何处理。
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.badtree</groupId><artifactId>badtree</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>badtree</name><url>http://maven.apache.org</url><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.2.RELEASE</version></parent><dependencies><!-- local library --><dependency><groupId>com.oracle</groupId><artifactId>ojdbc</artifactId><version>6</version><scope>system</scope><systemPath>${project.basedir}/lib/ojdbc-6.jar</systemPath></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency></dependencies> </project>
PasswordUtil.java
package org.badtree.utils;import org.springframework.stereotype.Component;@Component public class PasswordUtil {public String getPassowrd() {return "123456";}}
application.properties
org.badtree.datasource.driver-class-name = oracle.jdbc.driver.OracleDriver org.badtree.datasource.url = jdbc:oracle:thin:@localhost:1521:badtreedb org.badtree.datasource.username = badtree
1. XML配置方式
application.java
package org.badtree;import org.springframework.boot.Banner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.ImportResource;@SpringBootApplication @ImportResource(locations={"classpath:applicationContext.xml"}) public class Application {public static void main(String[] args) {SpringApplication app = new SpringApplication(Application.class);app.setBannerMode(Banner.Mode.OFF);ConfigurableApplicationContext context = app.run(args);}}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"><property name="driverClassName" value="${org.badtree.datasource.driver-class-name}"/><property name="jdbcUrl" value="${org.badtree.datasource.url}"/><property name="username" value="${org.badtree.datasource.username}"/><property name="password" value="#{passwordUtil.getPassowrd()}"/></bean><bean id="passwordUtil" class="org.badtree.utils.PasswordUtil" /> </beans>
2. Java 代码注册Bean
application.java
package org.badtree;import org.springframework.boot.Banner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplication public class Application {public static void main(String[] args) {SpringApplication app = new SpringApplication(Application.class);app.setBannerMode(Banner.Mode.OFF);ConfigurableApplicationContext context = app.run(args);}}
DataSourceConfig.java
package org.badtree.config;import javax.sql.DataSource;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import org.badtree.utils.PasswordUtil; import com.zaxxer.hikari.HikariDataSource;@Configuration public class DataSourceConfig {@Value("${org.badtree.datasource.driver-class-name}")private String driverClassName;@Value("${org.badtree.datasource.url}")private String jdbcUrl;@Value("${org.badtree.datasource.username}")private String username;@Autowiredprivate PasswordUtil passwordUtil;@Beanpublic DataSource dataSource() {HikariDataSource dataSource = new HikariDataSource();dataSource.setDriverClassName(driverClassName);dataSource.setJdbcUrl(jdbcUrl);dataSource.setUsername(username);dataSource.setPassword(passwordUtil.getPassowrd());return dataSource;} }
转载于:https://www.cnblogs.com/badtree/articles/9132578.html
Spring Boot 动态设置数据库密码,密码加密,密码单独处理相关推荐
- druid jar包_使用druid实现Spring boot配置文件中数据库密码密文存储
通常在编写代码的时候,数据库的用户名和密码以明文的方法写到配置文件中,系统运维为了保证一定的安全性,要求我们在配置文件中使用密文的方式存储,本文主要介绍使用druid实现数据库密码密文显示的方法. 一 ...
- 数据库身份证号加密密码加密_使用基于密码的加密保护会议室数据库
数据库身份证号加密密码加密 As developers we are often tasked with securing the data we store in our applications. ...
- 数据库身份证号加密密码加密_使用密码加密数据
数据库身份证号加密密码加密 介绍 (Introduction) When we're encrypting data, typically we will create a random key th ...
- Spring Boot 整合 shiro 之盐值加密认证详解(六)
Spring Boot 整合 shiro 之盐值加密认证详解 概述 不加盐认证 加入密码认证核心代码 修改 CustomRealm 新增获取密文的方法 修改 doGetAuthenticationIn ...
- spring boot 动态切换数据源实现多租户开发
之前的文章有介绍过spring boot 动态切换数据源spring boot 动态切换数据源(数据源信息从数据库中读取)_lgq2016的博客-CSDN博客,今天简单介绍一下动态数据源切换实战,主要 ...
- Quartz在Spring中动态设置cronExpression
什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定). 这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文 ...
- Quartz在Spring中动态设置cronExpression (spring设置动态定时任务)
2019独角兽企业重金招聘Python工程师标准>>> 什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定). 这样总不能修改 ...
- 音乐播放器-Android+okhttp连接+Spring boot服务器+oracle数据库+腾讯云端
1.整体架构 1.1软件系统架构: Android+okhttp连接+Spring boot服务器+oracle数据库+腾讯云端服务器地址:https://github.com/DNFDS/Twink ...
- java中用spring boot连接oracle数据库
java中用spring boot连接oracle数据库 代码下载链接 百度云:https://pan.baidu.com/s/1dU_z2pUS2NSfowI4_mJ4Ow 提取码:mmlm CSD ...
最新文章
- EF-Net一种适用于双流SOD的有效检测模型(Pattern Recognition)
- stm32f746 linux,在Linux系统下搭建STM32开发环境--Nucleo-F429ZI
- 三招做出页面中的节奏与韵律
- Robot framework 引入 Selenium2Library 类库:
- 【飞秋】关于结构体和结构体指针的P-INVOKE
- dropout为什么有效
- Pytorch在colab和kaggle中使用TensorBoard/TensorboardX可视化
- 如何在unity中调用电脑或安卓自带的摄像机
- java连接SqlServer2000
- URI和URL、URN的作用和区别
- 索菲对讲机写频软件_万能对讲机写频软件
- 在线编辑Word——插入公式
- 资深影迷不可不知的宽高比:Aspect Ratio 电影画面比例
- 优锘科技:森数据初体验
- Ubuntu18.04 + RTX2080Ti + CUDA +cudnn 环境配置
- [IOS/Swift]'Project Name' was compiled with optimization
- Android中自定义悬浮窗
- STM32F411RE项目开发-3-定时器的使用
- 使用另一种方式连接数据库
- 《Python知识手册》.pdf