商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
您的位置:首页 > 技术频道 > 正文

给hibernate配置文件加密、解密的方案

作者:(来自javaeye论坛)  2007-04-20

将加密后的密文添加到配置文件中

代码:
<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) { 2String password = (BasicDataSource)dataSource.getPassword(); 3//通过cipher类进行解密 4String decryPassword = DESUtil.decrypt(password); 5dataSource.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
之前robbin说的DataSourceFactoryBean那个类我在spring1.2.8中没有找到,但是我觉得改造LocalSessionFactoryBean也不错.
1 2
【内容导航】
第1页: 步骤1 第2页: 步骤2
©版权所有。未经许可,不得转载。
[责任编辑:李宁]