网上好多处理动态密码或密码加密都是用 【 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 动态设置数据库密码,密码加密,密码单独处理相关推荐

  1. druid jar包_使用druid实现Spring boot配置文件中数据库密码密文存储

    通常在编写代码的时候,数据库的用户名和密码以明文的方法写到配置文件中,系统运维为了保证一定的安全性,要求我们在配置文件中使用密文的方式存储,本文主要介绍使用druid实现数据库密码密文显示的方法. 一 ...

  2. 数据库身份证号加密密码加密_使用基于密码的加密保护会议室数据库

    数据库身份证号加密密码加密 As developers we are often tasked with securing the data we store in our applications. ...

  3. 数据库身份证号加密密码加密_使用密码加密数据

    数据库身份证号加密密码加密 介绍 (Introduction) When we're encrypting data, typically we will create a random key th ...

  4. Spring Boot 整合 shiro 之盐值加密认证详解(六)

    Spring Boot 整合 shiro 之盐值加密认证详解 概述 不加盐认证 加入密码认证核心代码 修改 CustomRealm 新增获取密文的方法 修改 doGetAuthenticationIn ...

  5. spring boot 动态切换数据源实现多租户开发

    之前的文章有介绍过spring boot 动态切换数据源spring boot 动态切换数据源(数据源信息从数据库中读取)_lgq2016的博客-CSDN博客,今天简单介绍一下动态数据源切换实战,主要 ...

  6. Quartz在Spring中动态设置cronExpression

    什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定). 这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文 ...

  7. Quartz在Spring中动态设置cronExpression (spring设置动态定时任务)

    2019独角兽企业重金招聘Python工程师标准>>> 什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定). 这样总不能修改 ...

  8. 音乐播放器-Android+okhttp连接+Spring boot服务器+oracle数据库+腾讯云端

    1.整体架构 1.1软件系统架构: Android+okhttp连接+Spring boot服务器+oracle数据库+腾讯云端服务器地址:https://github.com/DNFDS/Twink ...

  9. java中用spring boot连接oracle数据库

    java中用spring boot连接oracle数据库 代码下载链接 百度云:https://pan.baidu.com/s/1dU_z2pUS2NSfowI4_mJ4Ow 提取码:mmlm CSD ...

最新文章

  1. EF-Net一种适用于双流SOD的有效检测模型(Pattern Recognition)
  2. stm32f746 linux,在Linux系统下搭建STM32开发环境--Nucleo-F429ZI
  3. 三招做出页面中的节奏与韵律
  4. Robot framework 引入 Selenium2Library 类库:
  5. 【飞秋】关于结构体和结构体指针的P-INVOKE
  6. dropout为什么有效
  7. Pytorch在colab和kaggle中使用TensorBoard/TensorboardX可视化
  8. 如何在unity中调用电脑或安卓自带的摄像机
  9. java连接SqlServer2000
  10. URI和URL、URN的作用和区别
  11. 索菲对讲机写频软件_万能对讲机写频软件
  12. 在线编辑Word——插入公式
  13. 资深影迷不可不知的宽高比:Aspect Ratio 电影画面比例
  14. 优锘科技:森数据初体验
  15. Ubuntu18.04 + RTX2080Ti + CUDA +cudnn 环境配置
  16. [IOS/Swift]'Project Name' was compiled with optimization
  17. Android中自定义悬浮窗
  18. STM32F411RE项目开发-3-定时器的使用
  19. 使用另一种方式连接数据库
  20. 《Python知识手册》.pdf

热门文章

  1. POI将网络图片添加到excel
  2. Unity3D-实现第一人称人物动作: 走,跑,跳,移动视角
  3. 软件工程方向硕士论文撰写指南
  4. Unity Live2D 通过脚本播放动画 Motion Controller 学习使用
  5. obj、fbx 转 3dtiles(免费转换工具)
  6. Android 用 broadcast receiver组件实现音乐盒
  7. 计算机职业生涯测评,皮纹检测职业版——职业生涯规划指南测评系统
  8. 解决docker容器中使用composer,无法解析安装包
  9. 长白县积极建设精准扶贫云平台
  10. VR全景看家装,让家装不再“纸上谈兵”