生产环境c3p0数据源用户名密码加密或解密

来源:互联网 发布:网络教学软件相关推荐 编辑:程序博客网 时间:2024/05/21 09:16

直接上代码,相信大部分人能看懂

Spring applicationContext.xml

 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">        <property name="properties">            <bean class="cn.oa.util.C3P0DatasourcePropertiesFactory" factory-method="getProperties">                <constructor-arg type="java.lang.String">                    <value>${jdbc.password}</value>                </constructor-arg>                <!-- 生产环境模式 ,才特殊处理加密密码-->                  <constructor-arg type="java.lang.String">                    <value>${jdbc.password.encrypted}</value>                </constructor-arg>        </bean>   </property>        <property name="driverClass" value="${jdbc.driverClassName}"/>        <property name="jdbcUrl" value="${jdbc.url}"/>        <property name="user" value="${jdbc.userName}"/>        <!-- <property name="password" value="${jdbc.password}"/> -->       <property name="initialPoolSize" value="10"/>        <property name="maxPoolSize" value="${db.pool.maxpoolsize}"/>        <property name="minPoolSize" value="${db.pool.minpoolsize}"/>        <property name="acquireIncrement" value="5"/>  <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。 -->                <property name="idleConnectionTestPeriod" value="60"/><!--每30秒检查所有连接池中的空闲连接。-->     </bean>

注意,这里有个先后顺序的问题,<property name="properties"> 必须要在前面


import java.util.Properties;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import cn.biznest.mediacircle.util.encrypt.CryptoUtil;public class C3P0DatasourcePropertiesFactory {private static final String PRODUCTION_MODE = "true";private static final String PROP_PASSWORD = "password";private final static Logger logger = LoggerFactory.getLogger(C3P0DatasourcePropertiesFactory.class);public static Properties getProperties(String pwd, String production) throws Exception {Properties p = new Properties();
if (PRODUCTION_MODE.equals(production)) {try {p.setProperty(PROP_PASSWORD, CryptoUtil.decode(pwd));//解密操作
 catch (Exception e) {logger.error("C3P0DatasourcePropertiesFactory getProperties is error!", e);throw e;}}else{p.setProperty(PROP_PASSWORD, pwd);}return p;}}


0 0