Spring+Hibernate 数据库配置信息的加密
2015-08-19 11:32
393 查看
在hibernate.cfg.xml中,用户和密码是明文存放的,存放某些安全问题,可以重写dataSource类来实现对配置信息加密的解密方法
比如这个配置中我们需要重写org.springframework.jdbc.datasource.DriverManagerDataSource
这个类继承于AbstractDriverBasedDataSource
可以写个类继承AbstractDriverBasedDataSource,重写里面的方法
比如用户、密码照着DriverManagerDataSource改掉相应的方法
修改后
最后把dataSource改为重写的类
PS:如果使用第三方的连接器,CustomDriverManagerConnectionProvider则需要继承于相应的连接器,如C3P0ConnectionProvider
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean>
比如这个配置中我们需要重写org.springframework.jdbc.datasource.DriverManagerDataSource
这个类继承于AbstractDriverBasedDataSource
可以写个类继承AbstractDriverBasedDataSource,重写里面的方法
比如用户、密码照着DriverManagerDataSource改掉相应的方法
/** * Create a new DriverManagerDataSource with the given standard * DriverManager parameters. * @param url the JDBC URL to use for accessing the DriverManager * @param username the JDBC username to use for accessing the DriverManager * @param password the JDBC password to use for accessing the DriverManager * @see java.sql.DriverManager#getConnection(String, String, String) */ public DriverManagerDataSource(String url, String username, String password) { setUrl(url); setUsername(username); setPassword(password); } /** * Create a new DriverManagerDataSource with the given JDBC URL, * not specifying a username or password for JDBC access. * @param url the JDBC URL to use for accessing the DriverManager * @param conProps JDBC connection properties * @see java.sql.DriverManager#getConnection(String) */ public DriverManagerDataSource(String url, Properties conProps) { setUrl(url); setConnectionProperties(conProps); }
修改后
/** * Create a new DriverManagerDataSource with the given standard * DriverManager parameters. * @param url the JDBC URL to use for accessing the DriverManager * @param username the JDBC username to use for accessing the DriverManager * @param password the JDBC password to use for accessing the DriverManager * @see java.sql.DriverManager#getConnection(String, String, String) */ public DriverManagerDataSource(String url, String username, String password) { setUrl(url); setUsername(DesEncrypter.getInstance().decrypt(username)); setPassword(DesEncrypter.getInstance().decrypt(password)); } /** * Create a new DriverManagerDataSource with the given JDBC URL, * not specifying a username or password for JDBC access. * @param url the JDBC URL to use for accessing the DriverManager * @param conProps JDBC connection properties * @see java.sql.DriverManager#getConnection(String) */ public DriverManagerDataSource(String url, Properties conProps) { setUrl(url); if(conProps.containsKey("user")){ conProps.setProperty("user", DesEncrypter.getInstance().decrypt(conProps.getProperty("user"))); } if(conProps.containsKey("password")){ conProps.setProperty("password", DesEncrypter.getInstance().decrypt(conProps.getProperty("password"))); } setConnectionProperties(conProps); }
最后把dataSource改为重写的类
<bean id="dataSource" class="com.ht.platform.datasource.DriverManagerDataSource">
PS:如果使用第三方的连接器,CustomDriverManagerConnectionProvider则需要继承于相应的连接器,如C3P0ConnectionProvider
相关文章推荐
- java 静态方法和实例方法的区别
- spring bean scope模式配置的一些思考
- java爬取网页内容 简单例子
- 读取Java文件到byte数组的三种方式
- Spring与Quartz的整合实现定时任务调度
- Java的内存机制
- java:队列模拟(自定义链表结构 +LinkedList )
- 用java生成html文件
- Struts2的异常处理机制
- Spring 3整合Quartz 2实现定时任务一:常规整合
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- 第10章 JSP、JavaBean和Servlet的配合使用
- Java内部类大解析
- Resizing array笨办法,每次都要新建一个临时数组
- Spring整合JMS——基于ActiveMQ实现
- java list三种遍历方法性能比较
- Struts2拦截器篇(一)
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- atititt.java定时任务框架选型Spring Quartz 注解总结
- Java整型有序数组遍历一次输出其中重复的值