将加密后的密文添加到配置文件中
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="org.gjt.mm.mysql.Driver"/>
<property name="url" value="jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true"/>
<property name="username" value="root"/>
<property name="password" value="21sadf25"/>
<property name="maxActive" value="100"/>
<property name="whenExhaustedAction" value="1"/>
<property name="maxWait" value="120000"/>
<property name="maxIdle" value="30"/>
<property name="defaultAutoCommit" value="true"/>
</bean>
步骤3
继承spring的LocalSessionFactoryBean类,override其setDataSource方法,将dataSource的password取出,解密后再赋值。
为什么要这么做呢,因为datasource是localsessionFactoryBean的一个属性,在注入dataSource时将其密码解密是比较恰当的。所以选择这个setDataSource方法进行override。假设我们使用的dbcp连接池
代码如下:(类名是AhuaXuanLocalSessionFactoryBean)
1public void setDataSource(DataSource dataSource) ...{ 2
String password = (BasicDataSource)dataSource.getPassword(); 3
//通过cipher类进行解密 4
String decryPassword = DESUtil.decrypt(password); 5
dataSource.setPassword(decryPassword); 6
this.dataSource = dataSource; 7
} 8
1<bean id="sessionFactory" class="org.springframework.orm.hibernate.AhuaXuanLocalSessionFactoryBean"> 2
<property name="dataSource"> 3
<ref bean="dataSource"/> 4
</property> 5
</bean> 6