springmvc 通过ioc 切换数据源
2016-07-01 16:25
609 查看
先说明我们的项目的情况
我们项目,集合了springmvc+mybatis+ehcache+shiro
花了大量的时间去思考,去调试代码。
最终从4种方案中,成功了两个
解决,数据源切换问题,从而导致的ehcache,虚拟表不匹配问题,从而导致shiro。Session。Token,不匹配导致的死循环。
目标
第一种是
最简单,分叉,跳过上述技术,用原生态的方法,直接连接mysql,并得到数据。这样子,仅仅只适合验证一下用户名与密码。
因为要求,这种方案在后来被放弃了。
跳过第二第三种。
第四种方法---取得datasource对象,修改属性。。。。
我们的目标就是切换数据源。
其实也简单。基于,对整体框架的认识。
@Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class }) })
public class PagePlugin implements Interceptor {
这框架,用的是@Intercepts,拦截器,然后注入。然后重写intercept方法,上面的注释里面的对象,又写入了invoke对象
connection对象保存在spring-application.xml,里面的datasource里面是写死。
通过调试,发现了,读取的不是文件,而是内存。
提出第四种方案。
问题是得到datasource对象。
自己写了个类,继承了DriverManagerDataSource
http://brothergrup.iteye.com/blog/1543463
感谢博主,提供方法,得到spring ioc 的对象的方案
public class JDBCTest extends DriverManagerDataSource{
public void changeJDBC(String url,String username,String password) {
setUrl(url);
setUsername(username);
setPassword(password);
}
}
我们项目,集合了springmvc+mybatis+ehcache+shiro
花了大量的时间去思考,去调试代码。
最终从4种方案中,成功了两个
解决,数据源切换问题,从而导致的ehcache,虚拟表不匹配问题,从而导致shiro。Session。Token,不匹配导致的死循环。
目标
第一种是
最简单,分叉,跳过上述技术,用原生态的方法,直接连接mysql,并得到数据。这样子,仅仅只适合验证一下用户名与密码。
因为要求,这种方案在后来被放弃了。
跳过第二第三种。
第四种方法---取得datasource对象,修改属性。。。。
我们的目标就是切换数据源。
其实也简单。基于,对整体框架的认识。
@Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class }) })
public class PagePlugin implements Interceptor {
这框架,用的是@Intercepts,拦截器,然后注入。然后重写intercept方法,上面的注释里面的对象,又写入了invoke对象
connection对象保存在spring-application.xml,里面的datasource里面是写死。
通过调试,发现了,读取的不是文件,而是内存。
提出第四种方案。
问题是得到datasource对象。
自己写了个类,继承了DriverManagerDataSource
http://brothergrup.iteye.com/blog/1543463
感谢博主,提供方法,得到spring ioc 的对象的方案
public class JDBCTest extends DriverManagerDataSource{
public void changeJDBC(String url,String username,String password) {
setUrl(url);
setUsername(username);
setPassword(password);
}
}
<bean id="dataSource" class="junit.test.JDBCTest"> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="driverClassName" value="${jdbc.driverClass}" /> </bean> <!-- lpl 自定义注册 --> <bean id="springfactory" class="com.framework.util.SpringFactory"></bean> <bean id="pagePlugin" class="com.framework.plugin.PagePlugin"> <property name="properties"> <props> <prop key="dialect">mysql</prop> <prop key="pageSqlId">.*query.*</prop> </props> </property> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
相关文章推荐
- Java的常用类与接口
- java设计模式-代理模式(Proxy Pattern)
- struts2的数据验证之编码方式验证和validation.xml验证
- Spring和Hibernate 下如何保持事务的一致性和并发控制。
- Spring + iBatis 的多库横向切分简易解决思路
- springmvc集成swagger实现接口文档自动化生成
- 实战之eclipse新建一个mavenWeb项目
- SpringMVC Validation
- Java要把字符串设计成不可变
- java.io包中的字节流—— FilterInputStream和FilterOutputStream
- Spring MVC整理系列(05)————Spring MVC配置解析及整合SpriSpring MVC之@ModelAttribute、@SessionAttributes以及Model的使用介绍
- Spring @Transactional工作原理
- Spring + iBatis 的多库横向切分简易解决思路
- InterlliJ java 项目报错 javacTask: 源发行版 1.6 需要目标发行版 1.6
- web 简单的整合shiro
- SSM整合中spring-mybatis.xml详解
- JAVA代码重用机制复用类之继承语法(附源码)
- Java按字节读写二进制文件
- 传智播客Spring MVC教案
- 动态代理proxy