文档章节

Spring+MyBatis多数据源配置实现

有资本再款
 有资本再款
发布于 2015/06/12 15:39
字数 337
阅读 27
收藏 0

Spring多数据源的配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd	
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
		default-autowire="byName">

	<bean id="xingeimsDataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url"
			value="jdbc:mysql://172.16.4.39/xingeims?characterEncoding=utf8" />
		<property name="username" value="xinge" />
		<property name="password" value="xingeims" />
	</bean>

	<bean id="creditDataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url"
			value="jdbc:mysql://localhost:3306/credit?characterEncoding=utf8" />
		<property name="username" value="root" />
		<property name="password" value="root" />
	</bean>


	<bean id="multipleDataSource" class="com.xinge.ims.common.MultipleDataSource">
		<property name="defaultTargetDataSource" ref="xingeimsDataSource" />
		<property name="targetDataSources">
			<map>
				<entry key="xingeimsDataSource" value-ref="xingeimsDataSource" />
				<entry key="creditDataSource" value-ref="creditDataSource" />
			</map>
		</property>
	</bean>

	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="multipleDataSource" />
		<property name="typeAliasesPackage" value="com.xinge.ims.dal.domain" />
	</bean>

	<!-- scan for mappers and let them be autowired -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.xinge.ims.dal.persistence" />
	</bean>

	<!-- transaction manager, use JtaTransactionManager for global tx -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="multipleDataSource" />
	</bean>

	<!-- enable transaction demarcation with annotations -->
	<tx:annotation-driven transaction-manager="transactionManager" />

</beans>
public class MultipleDataSource extends AbstractRoutingDataSource{

	private static final ThreadLocal<String> dataSourceKey = new InheritableThreadLocal<String>();

    public static void setDataSourceKey(String dataSource) {
        dataSourceKey.set(dataSource);
    }
	
	@Override
	protected Object determineCurrentLookupKey() {
		return dataSourceKey.get();
	}

	
}
@Component
@Aspect
public class MultipleDataSourceAspectAdvice {

	/**
	 * 设置数据源,拦截dao层
	 * @param jp
	 * @return
	 * @throws Throwable
	 */
	@Around("execution(* com.xinge.ims.dal.persistence.*.*(..))")
	public Object doAround(ProceedingJoinPoint jp) throws Throwable {
		if (jp.getTarget() instanceof CreditDAO) {
			MultipleDataSource.setDataSourceKey("creditDataSource");
		} else {
			MultipleDataSource.setDataSourceKey("xingeimsDataSource");
		}
		return jp.proceed();
	}
}


本文转载自:http://www.cnblogs.com/lzrabbit/p/3750803.html

共有 人打赏支持
有资本再款
粉丝 5
博文 99
码字总数 16312
作品 0
黄冈
Spring+MyBatis多数据源配置实现

jdbc和log4j的配置 #定义输出格式ConversionPattern=%d %-5p [%t] %c - %m%n log4j.rootLogger=DEBUG,Consolelog4j.logger.com.cnblogs.lzrabbit=DEBUGlog4j.logger.org.springframework=ER......

引鸩怼孑
2015/06/17
0
3
spring+mybatis 配置了三个数据源,事物失效

问题: spring+mybatis 配置了三个数据源,事物失效,手动使用 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 也不回滚; 背景: 有个项目使用SSM框架,需要访问...

太黑_thj
2017/04/11
89
0
使用Spring Profile和Mybatis进行多个数据源(H2和Mysql)的切换

最近在做WebMagic的后台,遇到一个问题:后台用到了数据库,本来理想情况下是用Mysql,但是为了做到开箱即用,也整合了一个嵌入式数据库H2。这里面就有个问题了,如何用一套代码,提供对Mys...

黄亿华
2014/03/20
0
3
Spring+Mybatis 实现多数据源和多事物配置

没有相应的RPC接口,一个项目存在多个数据源,不想在代码端自己编写代码切换数据源? 你有可能需要下面的解决方案: 多数据源配置 多事物配置 配置事物拦截器 注解方式 在spring-mybatis配置文...

jeremyli90
2017/11/09
0
0
PropertyPlaceholderConfigurer 无效的问题

问题描述: 这两天自己配置SPring+MyBatis遇到了个问题,搞了一天才搞定。就是PropertyPlaceholderConfigurer加载配置之后在DatasSource中的使用无效的问题。 以下是配置 <bean id="property...

Lubby
2015/12/08
182
1

没有更多内容

加载失败,请刷新页面

加载更多

造谣造到t-io老巢了

只发当事人的截图,不发表评论,以免有引导嫌疑 PS1:截图是由不同的人发过来的 PS2:本人已经不在此微信群 PS3:图3是2018-09-23的t-io官方群的一个发言小统计,有助于让人认识到他们的其中...

talent-tan
20分钟前
24
0
heartbeat 资源

drbd+apache+heartbeat : http://blog.51cto.com/11838039/1827901 heartbeat双机热备的架设 : http://blog.51cto.com/11838039/1827560 对heaetbeat的深一步认识 : http://blog.51cto.co......

寰宇01
54分钟前
3
0
Spring 转换 model 为 json 时增加属性

缘起 目前的项目中有个需求是在附件对象转换成 json 时增加个 url 属性,以前的方式是在返回附件对象或列表时候做一次统一处理,这次想看看 spring 或者 jackson fasterxml 是否自带类似功能...

郁也风
今天
3
0
10大PHP比特币开源项目

如果你是一个Phper,如果你希望学习区块链,那么本文列出的 10个开源的Php比特币项目,将有助于你了解在自己的应用中 如何加入对比特币的支持。 如果你希望快速掌握使用Php对接比特币钱包的方...

汇智网教程
今天
3
0
springclould feign客户端添加全局参数

用springclould feign作为调用服务的客户端,一般来说参数可以写在feignclient的方法参数里 有时需要所有feign请求都统一添加一些参数,例如token用于鉴权等,可以这样做: 添加一个配置类,...

canneljls
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部