博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c3p0数据源用户名密码加密
阅读量:7012 次
发布时间:2019-06-28

本文共 2798 字,大约阅读时间需要 9 分钟。

  hot3.png

spring2 配置文件

Java代码  收藏代码

  1. <?xml version="1.0"?>  

  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  

  3. <beans>  

  4.     <!--  数据源配置 -->  

  5. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">  

  6.         <property name="driverClass">  

  7.             <value>oracle.jdbc.driver.OracleDriver</value>  

  8.         </property>  

  9.         <property name="jdbcUrl" value="jdbc:oracle:thin:@IP:端口:SID" />  

  10.         <property name="acquireIncrement" value="1"/>  

  11.         <property name="idleConnectionTestPeriod" value="300"/>  

  12.         <property name="maxPoolSize" value="5"/>  

  13.         <property name="minPoolSize" value="1"/>  

  14.         <property name="initialPoolSize" value="1" />  

  15.         <property name="numHelperThreads" value="3"/>  

  16.         <property name="maxIdleTime" value="1200" />  

  17.         <property name="acquireRetryAttempts" value="2"/>  

  18.         <property name="preferredTestQuery" value=" select 1 from dual "/>  

  19.         <property name="testConnectionOnCheckin" value="true"/>  

  20.         [color=red]<property name="properties" ref="dataSourceProperties"/>[/color]  

  21.     </bean>  

  22.       

  23.     <bean id="dataSourceProperties" class="PropertiesEncryptFactoryBean">  

  24.         <property name="properties">  

  25.             <props>  

  26.                 <prop key="user">xxxx加密后</prop>  

  27.                 <prop key="password">xxxxxxx加密后</prop>  

  28.             </props>  

  29.         </property>  

  30.     </bean>  

2.PropertiesEncryptFactoryBean(加密类)

Java代码  收藏代码

  1. import java.util.Properties;  

  2.   

  3. import org.springframework.beans.factory.FactoryBean;  

  4.   

  5. public class PropertiesEncryptFactoryBean implements FactoryBean {  

  6.   

  7.     private Properties properties;  

  8.       

  9.     public Object getObject() throws Exception {  

  10.         return getProperties();  

  11.     }  

  12.   

  13.     public Class getObjectType() {  

  14.         return java.util.Properties.class;  

  15.     }  

  16.   

  17.     public boolean isSingleton() {  

  18.         return true;  

  19.     }  

  20.   

  21.     public Properties getProperties() {  

  22.         return properties;  

  23.     }  

  24.   

  25.     public void setProperties(Properties inProperties) {  

  26.         this.properties = inProperties;  

  27.         String originalUsername = properties.getProperty("user");  

  28.         String originalPassword = properties.getProperty("password");  

  29.         if (originalUsername != null){  

  30.             String newUsername = deEncryptUsername(originalUsername);  

  31.             properties.put("user", newUsername);  

  32.         }  

  33.         if (originalPassword != null){  

  34.             String newPassword = deEncryptPassword(originalPassword);  

  35.             properties.put("password", newPassword);  

  36.         }  

  37.     }  

  38.       

  39.     private String deEncryptUsername(String originalUsername){  

  40.         return deEncryptString(originalUsername);  

  41.     }  

  42.       

  43.     private String deEncryptPassword(String originalPassword){  

  44.         return deEncryptString(originalPassword);  

  45.     }  

  46.     //简单加密  

  47.     private String deEncryptString(String originalString){  

  48.         StringBuilder newString = new StringBuilder();  

  49.         for (int i = 0; i < originalString.length(); i++) {  

  50.             char eachChar= originalString.charAt(i);  

  51.             char newChar = (char)(eachChar + i);  

  52.             newString.append(newChar);  

  53.         }  

  54.         return newString.toString();  

  55.     }  

  56.   

  57. }  

ComboPooledDataSource的properties属性可被注入user,password
只有user,password两个属性是可配置,其他属性不存也不是取自properties(具体可看C3P0源码)  

转载于:https://my.oschina.net/farces/blog/288435

你可能感兴趣的文章
100%布局的头部,内部内容960居中出现滚动条的时候,注意的小东西
查看>>
Ubuntu系统里下载安装配置redis-2.2.13.tar.gz
查看>>
2017年PHP程序员未来路在何方
查看>>
vue - webpack.base.conf.js
查看>>
MongoDB 主从复制小实验
查看>>
Linux Shell常用技巧(七)
查看>>
iOS网络编程解析协议二:XML数据传输解析
查看>>
Leetcode: Concatenated Words
查看>>
Python 多线程
查看>>
oracle数据库性能
查看>>
关于VS中的调试信息输出
查看>>
IOS-5个可以帮你优化App的优秀网站
查看>>
ArrayIndexOutOfBoundsException
查看>>
JAVA判断各种类型数据是否为空
查看>>
如何使用kali的Searchsploit查找软件漏洞
查看>>
Vim for Rails developers: Lazy modern configuration
查看>>
小鹏G3完成两轮三高测试 夏珩:该走的路我们一步不少走
查看>>
西班牙多地拉响“黄色大风”警报 华人出行需谨慎
查看>>
程序员必知的七个图形工具
查看>>
iOS 无需官方SDK实现微信、QQ社交功能,支持Web登录
查看>>