`
xinklabi
  • 浏览: 1586006 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

c3p0数据源用户名密码加密或解密(Spring中配置)

 
阅读更多

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源码)

分享到:
评论

相关推荐

    Spring数据源及配置文件数据加密实现过程详解

    Spring提供了多种数据源实现类,包括基于Apache DBCP和C3P0的实现。开发者可以根据需要选择合适的数据源实现类,并使用Spring的依赖注入机制将其集成到应用程序中。 二、数据源配置文件加密 在Spring应用程序中,...

    Java基础学习42.pdf

    接下来,我们需要配置C3P0的数据源,这通常通过在Java配置文件中设置一系列参数来完成,如初始化大小、最大连接数、超时时间等。例如: ```properties # C3P0配置示例 com.mchange.v2.c3p0.min_size=5 ...

    druid配置数据库连接使用密文密码

    Druid相比其他数据库连接池(如C3P0、DBCP等)具有更好的性能和稳定性,在实际项目中被广泛应用。 #### 密文密码的重要性 在软件开发中,直接将数据库密码写入配置文件是一种常见的做法,但这种方式非常不安全。...

    JAVA公共资源模块的设计与开发(源代码+).rar

    1. **数据库连接池**:可能包含一个名为`DBConnectionPool`的模块,实现了数据源的创建、获取和释放,如使用HikariCP、C3P0或Apache DBCP等库。 2. **缓存管理**:可能有`CacheService`模块,用于存储和检索临时...

    JAVA上百实例源码以及开源项目源代码

    图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT ...

    常用的jAVA包的作用

    这对于处理网络传输数据、加密解密等场景非常有用。 #### 8. Commons-Collections.jar Commons Collections 是Apache Commons项目下的集合操作工具包,提供了大量扩展或替代标准Java集合类的方法。例如,它提供了...

    java开源包1

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    htlibrary_JAVA源码_

    源码可能包含连接池技术,如C3P0或HikariCP,用于优化数据库连接的创建和释放。 2. 模型层:这部分代码将涉及图书、用户、借阅记录等实体类的设计,用以封装业务逻辑中的数据和行为。 3. 控制器层:这部分代码负责...

    java开源包11

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包2

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包3

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包6

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包5

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包10

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包4

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包8

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包7

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包9

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包101

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

Global site tag (gtag.js) - Google Analytics