Spring对外部属性文件指定的某个属性进行加密、解密
来源:互联网 发布:activemq amqp java 编辑:程序博客网 时间:2024/05/22 09:48
[From] http://blog.csdn.net/ethanq/article/details/7333897
在我们开发当中,经常会用到spring框架来读取属性文件的属性值,然后使用占位符引用属性文件的属性值来简化配置以及使配置具有更高的灵活性和通用性。
如下面的属性配置文件:db.properties
#数据库配置
db.driver=org.postgresql.Driver
db.url=jdbc\:postgresql\://10.166.176.127\:5432/test
db.username=ivsadmin
db.password=123456
db.name=ivs
applicationContext.xml文件
对于一些敏感的属性值,例如:密码属性。为了达到安全目的,我们一般会将密码进行加密。
可能希望用户看到db.properties是这样的:
#数据库配置
db.driver=org.postgresql.Driver
db.url=jdbc\:postgresql\://10.166.176.127\:5432/ivs
db.username=ivsadmin
db.password={SMC}sYNzVKgIhOprkdGhCyt81w==
db.name=ivs
这里可以看到密码属性值是加密过的,其它的属性值不变,这样就达到安全目的。这里采用的是java的3DES加密,在前面的文章中 3DES加密、解密工具类 已经有介绍了
下面开始分析下我们的需求:
在Spring中担负对外在化应用参数的配置的是PropertyPlaceholderConfigurer和PropertyOverrideConfigurer对象,PropertyPlaceholderConfigurer实现了BeanFactoryPostProcessor接口,它能够对<bean/>中的属性值进行外在化管理。
就像这样:
为简化PropertyPlaceholderConfigurer的使用,Spring提供了<context:property-placeholder/>元素,像applicationContext.xml文件中这样:<context:property-placeholder location="classpath:db.properties" />
这里就很清楚了,我们只要继承PropertyPlaceholderConfigurer对象,重写PropertiesLoaderSupport接口的loadProperties方法,就可以对外部属性文件的属性值进行相关的操作了
明白了需求,下来开始我们的实现代码:
DecryptPropertyPlaceholderConfigurer.java
其中propertiesPersister变量用我们写的DefaultPropertiesPersister类来实现,DecryptPropertiesPersister.java对象
最后需要修改下applicationContext.xml文件,如下:
这样对属性的加密就完成了,Spring进行加载的完成后,属性就加密了
提示:如果在配置中有多个配置文件需要加载,并且这些属性文件不需要做任何处理,那就需要添加下面的配置:
0 0
- Spring对外部属性文件指定的某个属性进行加密、解密
- Spring对外部属性文件指定的某个属性进行加密、解密
- Spring对属性文件加密解密应用
- Spring对属性文件加密解密应用详解
- java spring中对properties属性文件加密及其解密
- java spring中对properties属性文件加密及其解密
- java spring中对properties属性文件加密及其解密
- java spring中对properties属性文件加密及其解密
- java spring中对properties属性文件加密及其解密
- java spring中对properties属性文件加密及其解密
- java spring中对properties属性文件加密及其解密
- 在Spring中如何使用加密外部属性文件
- spring 使用外部属性文件
- Spring 使用外部属性文件
- Spring使用外部属性文件
- Spring中外部属性文件
- Spring使用外部属性文件
- spring-使用外部属性文件
- 勿忘初心,继续coding
- 碰撞的方向判定,和坐标转换
- 自己动手写一个属于自己的ARM9的bootloader
- API函数之GetUserName
- mysql binlog日志及mysqlbinlog操作详解
- Spring对外部属性文件指定的某个属性进行加密、解密
- 设计模式
- HDU-2544 最短路 【最短路裸题】
- 登录注册 (java jdbc servlet jsp)
- Maven 中央存储库
- vpn 工作原理
- Blog搬家
- Android 自定义View 带你飞(二)
- 判断WPF中gridview中的数据是否为空,若为空则不显示该字段方法