在实际的公司项目中,很可能会遇到一个问题就是,一个Java项目,但是项目中涉及两个数据库,这两个数据库还在不同IP的机子上。
遇到这种情况的时候,我们有两个选择
1、不走spring的aop方式,直接去多做两个dataSource
2、用spring进行管理,灵活地进行数据源切换
现在就来对第2种方式进行笔记:
spring.xml配置文件:
?
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:task="http://www.springframework.org/schema/task" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
? ? http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
? ? http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
? ? http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
? ? http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
?http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
? ? http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd ">?
?
? ? ?
? ?
? ?
? ?
? ? ? ? ? ? destroy-method="close">
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ?
? ? ?
? ?
? ?
? ? ? ? ? ? destroy-method="close">
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ?
? ? ?
? ?
? ?
? ?
? ? ? ?
? ? ? ? ? ?
? ? ? ?
? ? ? ?
? ?
? ?
? ?
? ? ?
? ? ? ?
? ? ? ?
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
? ?
------------------------------------------------------------------
/**
?* @fileName DataSourceContextHolder.java
?* @author chenkaideng
?* @date 2015年8月27日
?* @describe 数据源设值Holder类
?*/
public class DataSourceContextHolder {
?
? private static final ThreadLocal contextHolder = new ThreadLocal();?
?
? public static void setDbType(String dbType) {?
? contextHolder.set(dbType);?
? }?
?
? public static String getDbType() {?
? return ((String) contextHolder.get());?
? }?
?
? public static void clearDbType() {?
? contextHolder.remove();?
? }?
}
弄完以上的事情,剩下的事情就简单了
-》先是加载spring.xml文件applicationContext = new ClassPathXmlApplicationContext("spring.xml");
-》然后设置数据源DataSourceContextHolder.setDbType("db1");
-》接着从applicationContext 中获取sqlSession = (SqlSession) applicationContext.getBean("sqlSession");
-》最后就可以拿这个sqlSession去做增删改查的操作
注意:不用对这个sqlSession做close和comit的操作,因为都已经由spring自己管理了,不用手动做这些操作。