spring 多数据源配置
多数据源配置方法:
在配置数据源配置文件中多加一个数据源配置即可:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${dataSource.initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${dataSource.maxActive}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${dataSource.minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${dataSource.maxWait}"></property>
</bean>
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${url2}" />
<property name="username" value="${username2}" />
<property name="password" value="${password2}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${dataSource.initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${dataSource.maxActive}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${dataSource.minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${dataSource.maxWait}"></property>
</bean>
上面是两个数据源;
<!-- 配置 mybatis -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis.xml"/>
<property name="mapperLocations" value="classpath:com/sitech/message/pojo/*.xml"/>
</bean>
<!-- 配置 mybatis2 -->
<bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource2"/>
<property name="configLocation" value="classpath:mybatis.xml"/>
<property name="mapperLocations" value="classpath:com/sitech/message/pojo/*.xml"/>
</bean>
<!-- 配置 BaseDao -->
<bean id="baseDao" class="com.sitech.message.dao.impl.BaseDaoImpl">
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<!-- 配置 BaseDao2 -->
<bean id="baseDao2" class="com.sitech.message.dao.impl.BaseDaoImpl">
<property name="sqlSessionFactory" ref="sqlSessionFactory2"/>
</bean>
想配几个就加几个数据源,
测试类:
@Autowired
private BaseDao baseDao;
@Resource(name="baseDao2")
private BaseDao baseDao2;
@Scheduled(cron = "0/30 * * * * ?")
public void TestTwoDataSource(){
System.out.println("sssssssss");
Map<String,String> data1 = new HashMap<String,String>();
data1= baseDao.selectOne(NameSpace.BS_QUESTION_INFOMapper, "findRouteConfigTest");
System.out.println("dara1:"+data1);
Map<String,String> data2 = new HashMap<String,String>();
data2= baseDao2.selectOne(NameSpace.BS_QUESTION_INFOMapper, "findRouteConfigTest");
System.out.println("data2:"+data2);
}
完整数据源配置文件:
<?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:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-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/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<tx:annotation-driven />
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:config/env/jdbc.properties" />
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${dataSource.initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${dataSource.maxActive}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${dataSource.minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${dataSource.maxWait}"></property>
</bean>
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${url2}" />
<property name="username" value="${username2}" />
<property name="password" value="${password2}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${dataSource.initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${dataSource.maxActive}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${dataSource.minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${dataSource.maxWait}"></property>
</bean>
<!-- 配置 mybatis -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis.xml"/>
<property name="mapperLocations" value="classpath:com/sitech/message/pojo/*.xml"/>
</bean>
<!-- 配置 mybatis2 -->
<bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource2"/>
<property name="configLocation" value="classpath:mybatis.xml"/>
<property name="mapperLocations" value="classpath:com/sitech/message/pojo/*.xml"/>
</bean>
<!-- 配置 BaseDao -->
<bean id="baseDao" class="com.sitech.message.dao.impl.BaseDaoImpl">
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<!-- 配置 BaseDao2 -->
<bean id="baseDao2" class="com.sitech.message.dao.impl.BaseDaoImpl">
<property name="sqlSessionFactory" ref="sqlSessionFactory2"/>
</bean>
<!-- Mybatis Dao -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.sitech.message.dao"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--
name:与事务属性关联的方法名。通配符(*)可以用来指定一批关联到相同的事务属性的方法。 如:'get*'、'handle*'、'on*Event'等等。
propagation="REQUIRED":事务传播行为
isolation 默认值 DEFAULT:事务隔离级别
timeout 默认值 -1 事务超时的时间(以秒为单位)
read-only 默认值 false 事务是否只读?
rollback-for 将被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException,ServletException'
no-rollback-for 不被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException
-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="batch*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
<tx:method name="query*" propagation="REQUIRED" read-only="true" />
<tx:method name="find*" propagation="REQUIRED" read-only="true" />
<tx:method name="select*" propagation="REQUIRED" read-only="true" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!--
把事务控制在Service层
第一个 * —— 通配 任意返回值类型
第二个 * —— 通配 包com.polin.omeal.service下的任意class
第三个 * —— 通配 包com.polin.omeal.service下的任意class的任意方法
第四个 .. —— 通配 方法可以有0个或多个参数
综上:包com.polin.omeal.service下的任意class的具有任意返回值类型、任意类、任意名称的方法、任意数目参数和<tx:advice/>有关的设置
-->
<aop:config>
<aop:pointcut id="aop" expression="execution(* com.sitech.message.*.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="aop"/>
</aop:config>
</beans>
spring 多数据源配置的更多相关文章
- 基于xml的Spring多数据源配置和使用
上一篇讲了<基于注解的Spring多数据源配置和使用>,通过在类或者方法上添加@DataSource注解就可以指定某个数据源.这种方式的优点是控制粒度细,也更灵活. 但是当有些时候项目分模 ...
- spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置
spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置 jdbc.properties 文件信息如下: ---------- ...
- 基于注解的Spring多数据源配置和使用(非事务)
原文:基于注解的Spring多数据源配置和使用 1.创建DynamicDataSource类,继承AbstractRoutingDataSource package com.rps.dataSourc ...
- spring(16)------spring的数据源配置
在spring中,通过XML的形式实现数据源的注入有三种形式. 一.使用spring自带的DriverManagerDataSource 使用DriverManagerDataSource配置数据源与 ...
- 基于注解的Spring多数据源配置和使用
前一段时间研究了一下spring多数据源的配置和使用,为了后期从多个数据源拉取数据定时进行数据分析和报表统计做准备.由于之前做过的项目都是单数据源的,没有遇到这种场景,所以也一直没有去了解过如何配置多 ...
- Spring jndi数据源配置方法
xml配置: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverMana ...
- Spring 多数据源配置(转)
转载自:https://www.cnblogs.com/digdeep/p/4512368.html 同一个项目有时会涉及到多个数据库,也就是多数据源.多数据源又可以分为两种情况: 1)两个或多个数据 ...
- Spring boot 数据源配置。
配置文件 : spring boot 配置文件 有两种形式 ,一种是properties文件.一种是yml文件.案列使用properties文件. 数据源的默认配置 : spring boot 约定 ...
- spring多数据源配置
项目中我们经常会遇到多数据源的问题,尤其是数据同步或定时任务等项目更是如此.多数据源让人最头痛的,不是配置多个数据源,而是如何能灵活动态的切换数据源.例如在一个spring和hibernate的框架的 ...
随机推荐
- 深度学习之强化学习Q-Learning
1.知识点 """ 1.强化学习:学习系统没有像很多其他形式的机器学习方法一样被告知应该做什么行为, 必须在尝试之后才能发现哪些行为会导致奖励的最大化,当前的行为可能不仅 ...
- 001-软件架构概览、maven补充【分包工程、合并包、web容器插件】、git补充
一.整体概述 1.1.共性问题 技术瓶颈.不成体系.不能实际使用.不能落地.无法入门 1.2.目标-软件架构 专注于构建:高可扩展.高性能.大数据量.高并发.分布式的系统架构. 各项技术.组合构建分布 ...
- maven项目无法导入Oracle的jdbc连接jar包【我】
导入一个maven项目,启动一直报错 找不到Oracle的jdbc连接驱动Class, 用Eclipse导入 ojdbc14.jar 连接包,各种方法都无效,无法引入到部署后的lib目录中,可以直接放 ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-9.使用JWT生成用户Token回写客户端
笔记 9.使用JWT生成用户Token回写客户端 简介:讲解用户授权登录后,需要生成登录凭证重定向到页面上 1.获取当前页面访问地址 2.根据User基本信息生成token 3.重定向到指定页 ...
- 小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列(一)初体验
课程github地址 https://github.com/mercyblitz/segmentfault-lessons 传统的web应用架构.微服务是一种架构.不限定什么语言 单体应用和微服务的对 ...
- SafeVarargs的用法
转载自:http://softlab.sdut.edu.cn/blog/subaochen/2017/04/safevarargs%E7%9A%84%E7%94%A8%E6%B3%95/ @SafeV ...
- express服务端
1. 使用 Node.js + Express 开发服务端 2. 使用 Node.js + Express+MySQL 实现简单的增删改查 3. 初识NodeJS服务端开发(Express+MySQL ...
- 当你使用Pycharm编译程序的时候,遇到了这个问题,该怎么办?please select a valid interpreter
1.打开settings(CTRL + ALT + S)或者 file---setting 2.搜索 Interpreter 3.安装一个python的解释器,自行去官网下载,安装的时候,记得勾选配置 ...
- 想了解Java后端学习路线?你只需要这一张图!
前言 学习路线图往往是学习一样技术的入门指南.网上搜到的Java学习路线图也是一抓一大把. 今天我只选一张图,仅此一图,足以包罗Java后端技术的知识点.所谓不求最好,但求最全,学习Java后端的同学 ...
- nodejs加解密
加密分类 可逆加密和不可逆加密 不可逆加密: 加密后不可解密,只能通过碰撞密文以极小的概率解密; 可逆加密: 加密后可以解密;包括对称加密与非对称加密; 对称加密双方采用共同密钥; 非对称加密: 这种 ...