原文:http://www.open-open.com/code/view/1453520072183

spring框架在一些对安全性要求较高的生产环境下,配置文件不允许出现明文用户名密码配置,如数据库配置等。本文主要用于解决明文用户名密码加密。

 

通过继承spring配置类并重写处理方法实现密文解密

public class EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
private String[] encryptPropNames = {"username", "password"}; @Override
protected void processProperties(ConfigurableListableBeanFactory beanFactory,
Properties props) throws BeansException {
try {
for (int i = 0;i<encryptPropNames.length;i++){
String value = props.getProperty(encryptPropNames[i]);
if (value != null) {
props.setProperty(encryptPropNames[i],new String(DES.decrypt(new BASE64Decoder().decodeBuffer(value), "解密秘钥")));
} }
super.processProperties(beanFactory, props);
} catch (Exception e) {
e.printStackTrace();
throw new BeanInitializationException(e.getMessage());
}
}
}

配置applicationContext.xml文件,并在jdbc.properties中设置密文(根据解密秘钥生成)

<!-- class填写刚才那段代码的类路径-->
<bean id="propertyConfigurer" class="com.**.EncryptPropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>

最新文章

  1. 消息队列 Kafka 的基本知识及 .NET Core 客户端
  2. Java程序,猜大小游戏
  3. JS获取checkbox的个数
  4. [bzoj1103][POI2007]大都市meg(树状数组+dfs序)
  5. UIkit框架之UIPickerView
  6. [Xamarin] 製作Options Menu、Intent 呼叫網址和Market (转帖)
  7. Keytool生成csr
  8. percona-xtrabackup 文档
  9. raise_application_error用法
  10. html网页代码各种名称及作用
  11. boost signal2 slot_base
  12. 无需Visual Studio,5容易的 - 分为报告
  13. CSS预处理器的对比 — Sass、Less和Stylus
  14. kafka 入门笔记 #1
  15. 【hibernate 初探】之 关系映射,ORM
  16. Android使用ViewPager实现导航菜单
  17. idea启动tomcat报错:Error during artifact deployment. See server log for details.
  18. Linux Expect自动化交互脚本简介
  19. LeetCode 346. Moving Average from Data Stream (数据流动中的移动平均值)$
  20. Shell脚本——cat/EOF输出多行

热门文章

  1. 使用docker搭建gitlab 服务器
  2. 摄像头调用代码 笔记本的话,本身有一个摄像头,由于用的usb摄像头,需要把笔记本的摄像头禁用后,再使用
  3. 关于Java的三种普通排序
  4. Java集合系列之HashMap
  5. JSP常用的几种跳转方式
  6. encodeURI()与decodeURI()等转码方法
  7. css 浮动规则
  8. 区间DP入门
  9. svn基本使用详情
  10. Python面向对象之异常