资源简介
Spring+Mybatis+Atomikos实现JAVA初始化并控制多个数据源+分布式事务的一个DEMO,内涵源代码,以及一篇关于该内容的博客
代码片段和文件信息
/**
* Copyright (c) 2015 - 2016 eya Inc.
* All rights reserved.
*/
package com.eya.mt.datasource;
import java.util.Map;
import javax.sql.DataSource;
import org.apache.commons.collections.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
/**
* 动态数据源父类
* @create ll
* @createDate 2017年3月27日 下午2:38:05
* @update
* @updateDate
*/
public abstract class AbstractDynamicDataSource extends
AbstractRoutingDataSource
implements
ApplicationContextAware {
/** 日志 */
protected Logger logger = LoggerFactory.getLogger(getClass());
/** 默认的数据源KEY */
//protected static final String DEFAULT_DATASOURCE_KEY = “defaultDataSource“;
/** 数据源KEY-VALUE键值对 */
private Mapject object> targetDataSources;
/** spring容器上下文 */
private static ApplicationContext ctx;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ctx = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return ctx;
}
public static object getBean(String name) {
return ctx.getBean(name);
}
/**
* @param targetDataSources the targetDataSources to set
*/
public void setTargetDataSources(Mapject object> targetDataSources) {
this.targetDataSources = targetDataSources;
super.setTargetDataSources(targetDataSources);
// afterPropertiesSet()方法调用时用来将targetDataSources的属性写入resolvedDataSources中的
super.afterPropertiesSet();
}
/**
* @return the targetDataSources
*/
public Mapject object> getTargetDataSources() {
return this.targetDataSources;
}
/**
* 创建数据源
* @param driverClassName 数据库驱动名称
* @param url 连接地址
* @param username 用户名
* @param password 密码
* @return 数据源{@link T}
* @Author : ll. create at 2017年3月27日 下午2:44:34
*/
public abstract T createDataSource(String driverClassName String url String username
String password);
/**
* 设置系统当前使用的数据源
* 数据源为空或者为0时,自动切换至默认数据源,即在配置文件中定义的默认数据源
* @see org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource#determineCurrentLookupKey()
*/
@Override
protected object determineCurrentLookupKey() {
logger.debug(“【设置系统当前使用的数据源】“);
Mapject> configMap = DBC
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1510 2017-07-27 15:22 mult-table-demo\.classpath
文件 1224 2017-07-27 15:22 mult-table-demo\.project
文件 575 2017-07-27 15:22 mult-table-demo\.settings\.jsdtscope
文件 144 2017-07-27 15:22 mult-table-demo\.settings\org.eclipse.core.resources.prefs
文件 430 2017-07-27 15:22 mult-table-demo\.settings\org.eclipse.jdt.core.prefs
文件 90 2017-07-27 15:22 mult-table-demo\.settings\org.eclipse.m2e.core.prefs
文件 686 2017-07-27 15:22 mult-table-demo\.settings\org.eclipse.wst.common.component
文件 252 2017-07-27 15:22 mult-table-demo\.settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2017-07-27 15:22 mult-table-demo\.settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2017-07-27 15:22 mult-table-demo\.settings\org.eclipse.wst.jsdt.ui.superType.name
文件 50 2017-07-27 15:22 mult-table-demo\.settings\org.eclipse.wst.validation.prefs
文件 4264 2017-07-27 15:22 mult-table-demo\pom.xm
文件 5294 2017-07-27 15:22 mult-table-demo\src\main\java\com\eya\mt\datasource\AbstractDynamicDataSource.java
文件 4516 2017-07-27 15:22 mult-table-demo\src\main\java\com\eya\mt\datasource\AtomikosDynamicDataSource.java
文件 1497 2017-07-27 15:22 mult-table-demo\src\main\java\com\eya\mt\datasource\DBContextHolder.java
文件 366 2017-07-27 15:22 mult-table-demo\src\main\java\com\eya\mt\mydb\mapper\MyDbUserMapper.java
文件 751 2017-07-27 15:22 mult-table-demo\src\main\java\com\eya\mt\mydb\model\MyDbUser.java
文件 814 2017-07-27 15:22 mult-table-demo\src\main\java\com\eya\mt\mydb\service\MyDbUserService.java
文件 390 2017-07-27 15:22 mult-table-demo\src\main\java\com\eya\mt\otherdb\mapper\OtherDbStudentMapper.java
文件 768 2017-07-27 15:22 mult-table-demo\src\main\java\com\eya\mt\otherdb\model\OtherDbStudent.java
文件 865 2017-07-27 15:22 mult-table-demo\src\main\java\com\eya\mt\otherdb\service\OtherDbStudentService.java
文件 2633 2017-07-27 15:22 mult-table-demo\src\main\java\com\eya\mt\utils\RandomUtil.java
文件 965 2017-07-27 15:22 mult-table-demo\src\main\resources\applicationContext.xm
文件 3550 2017-07-27 15:22 mult-table-demo\src\main\resources\jta.properties
文件 1646 2017-07-27 15:22 mult-table-demo\src\main\resources\log4j.properties
文件 586 2017-07-27 15:22 mult-table-demo\src\main\resources\mapper\mydb\MyDbUserMapper.xm
文件 610 2017-07-27 15:22 mult-table-demo\src\main\resources\mapper\otherdb\OtherDbStudentMapper.xm
文件 5077 2017-07-27 15:22 mult-table-demo\src\main\resources\spring-mybatis.xm
文件 1167 2017-07-27 15:22 mult-table-demo\src\main\webapp\WEB-INF\web.xm
文件 2416 2017-07-27 15:22 mult-table-demo\src\test\java\com\eay\test\MultDbTest.java
............此处省略115个文件信息
- 上一篇:jasper-el.jar包
- 下一篇:局域网聊天工具Java版
评论
共有 条评论