spring boot 多数据源 + 事务控制
1,首先在启动类加上@EnableTransactionManagement注解
package cn.bforce.common; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication
@ComponentScan(basePackages={"cn.bforce.common"})
@EnableCaching
@EnableTransactionManagement
public class YuntuSysBaseApplication { public static void main(String[] args) {
SpringApplication.run(YuntuSysBaseApplication.class, args);
}
}
2,application.properties文件配置的双数据源文件配置
#datasource b-force
spring.datasource.bf.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.bf.url=jdbc:mysql://192.168.18.221:3306/b-force?characterEncoding=utf8&useSSL=true
spring.datasource.bf.username=root
spring.datasource.bf.password=root spring.datasource.bfscrm.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.bfscrm.url=jdbc:mysql://192.168.18.221:3306/b-force-scrm?characterEncoding=utf8&useSSL=true
spring.datasource.bfscrm.username=root
spring.datasource.bfscrm.password=root
3,JavaConfig 首先建立Java配置类,为其添加上注解@Configuration。并实现如下方法。
package cn.bforce.common.persistence.datasource; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager; @Configuration
public class GlobalDataConfiguration
{
@Bean(name = "bfDataSource")
@Qualifier("bfDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.bf")
public DataSource primaryDataSource()
{
System.out.println("-------------------- bfDataSource init ---------------------");
return DataSourceBuilder.create().build();
} @Bean(name = "bfscrmDataSource")
@Qualifier("bfscrmDataSource")
@ConfigurationProperties(prefix = "spring.datasource.bfscrm")
public DataSource secondaryDataSource()
{
System.out.println("-------------------- bfscrmDataSource init ---------------------");
return DataSourceBuilder.create().build();
} @Bean(name = "bfJdbcTemplate")
public JdbcTemplate bfJdbcTemplate(@Qualifier("bfDataSource") DataSource dataSource)
{
return new JdbcTemplate(dataSource);
} @Bean(name = "bfscrmJdbcTemplate")
public JdbcTemplate bfscrmscrmJdbcTemplate(@Qualifier("bfscrmDataSource") DataSource dataSource)
{
return new JdbcTemplate(dataSource);
} /******配置事务管理********/ @Bean
public PlatformTransactionManager bfTransactionManager(@Qualifier("bfDataSource")DataSource prodDataSource) {
return new DataSourceTransactionManager(prodDataSource);
} @Bean
public PlatformTransactionManager bfscrmTransactionManager(@Qualifier("bfscrmDataSource")DataSource sitDataSource) {
return new DataSourceTransactionManager(sitDataSource);
} }
4,使用。
@Transactional(value = "bfscrmTransactionManager",readOnly=true)
public DataObject doLoad(Serializable rowId)
{
return shopLbsRepository.doLoad(rowId);
} @Transactional(value = "bfscrmTransactionManager")
public int doUpdate(String v) {
shopLbsRepository.doUpdate(v);
int a = 8/0;
return 1;
}
总结:测试可用的。
****最后说明:如果要用指定的那个数据源,注解 JdbcTemplate 的时候。看如下代码。
@Autowired
@Qualifier("bfscrmJdbcTemplate")
protected JdbcTemplate jdbcTemp; @Autowired
@Qualifier("bfscrmDataSource")
protected DataSource dataSource;
@Autowired
@Qualifier("bfJdbcTemplate")
protected JdbcTemplate jdbcTemp; @Autowired
@Qualifier("bfDataSource")
protected DataSource dataSource;
************************
博主给自己的小程序打个广告,支付宝搜索: 变换购物助手
淘宝,天猫购物最高返利谢谢大家使用支持
spring boot 多数据源 + 事务控制的更多相关文章
- 关于Spring Boot 多数据源的事务管理
自己的一些理解:自从用了Spring Boot 以来,这近乎零配置和"约定大于配置"的设计范式用着确实爽,其实对零配置的理解是:应该说可以是零配置可以跑一个简单的项目,因为Spri ...
- Spring Boot中的事务管理
原文 http://blog.didispace.com/springboottransactional/ 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合 ...
- (43). Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】
在上一篇我们介绍了多数据源,但是我们会发现在实际中我们很少直接获取数据源对象进行操作,我们常用的是jdbcTemplate或者是jpa进行操作数据库.那么这一节我们将要介绍怎么进行多数据源动态切换.添 ...
- spring + ibatis 多数据源事务(分布式事务)管理配置方法(转)
spring + ibatis 多数据源事务(分布式事务)管理配置方法(转) .我先要给大家讲一个概念:spring 的多数据源事务,这是民间的说法.官方的说法是:spring 的分布式事务.明白了这 ...
- Spring Boot多数据源配置(二)MongoDB
在Spring Boot多数据源配置(一)durid.mysql.jpa 整合中已经讲过了Spring Boot如何配置mysql多数据源.本篇文章讲一下Spring Boot如何配置mongoDB多 ...
- Spring Boot中的事务是如何实现的
本文首发于微信公众号[猿灯塔],转载引用请说明出处 今天呢!灯塔君跟大家讲: Spring Boot中的事务是如何实现的 1. 概述 一直在用SpringBoot中的@Transactional来做事 ...
- 【Spring】Spring boot多数据源历险记
一.问题描述 笔者根据需求在开发过程中,需要在原项目的基础上(单数据源),新增一个数据源C,根据C数据源来实现业务.至于为什么不新建一个项目,大概是因为这只是个小功能,访问量不大,不需要单独申请个服务 ...
- Spring Boot 声明式事务结合相关拦截器
我这项目的读写分离方式在使用ThreadLocal实现的读写分离在迁移后的偶发错误里提了,我不再说一次了,这次是有要求读写分离与事务部分要完全脱离配置文件,程序员折腾了很久,于是我就查了一下,由于我还 ...
- spring boot(12)-数据源配置原理
本篇讲的不仅是数据源配置,这也是spring boot实现自动配置的一部分.要理解数据源的配置原理,首先要理解第十篇tomcat连接池的配置 数据源配置源码 这里截取org.springframewo ...
随机推荐
- mysql 内置功能 存储过程 删除存储过程
删除存储过程 drop procedure proc_name;
- Spark Shuffle Write阶段磁盘文件分析
这篇文章会详细介绍,Sort Based Shuffle Write 阶段是如何进行落磁盘的 流程分析 入口处: org.apache.spark.scheduler.ShuffleMapTask.r ...
- keras自定义padding大小
1.keras卷积操作中border_mode的实现 def conv_output_length(input_length, filter_size, border_mode, stride): i ...
- NLP语料库
文本语料库是一个大型结构化文本的集合 NLTK包含了许多语料库: (1)古滕堡语料库 (2)网络和聊天文本 (3)布朗语料库 (4)路透社语料库 (5)就职演讲语料库 (6)标注文本语料库 词汇列表 ...
- workerman定时任务使用
定时任务在有些场合很实用,像淘宝的自动确认收货就必须放在服务端进行,这时workeran的定时任务就派上用场了,它可以支持毫秒,crontab的粒度是一分钟 需要注意的是因为定时任务一直在执行,业 ...
- uva11383 转化为 二分图匹配
给定一个n*n矩阵,每个格子里都有一个正整数w(i,j).你的任务是给每行确定一个整数row(i),没列也确定一个正整数col(i),使得对于任意格子(i,j),w(i,j) <= row(i) ...
- DIV内容垂直居中
css垂直居中属性设置vertical-align: middle对div不起作用,例如: <!DOCTYPE html> <html lang="zh-CN"& ...
- 生成word附件和word域动态赋值
生成word文档和word域动态赋值,很多时候需要生成这样的word文档供下载和打印,先制作一个包含了域的 word的模板附件,放在服务器端或者字节流存入数据库,以供需要的时候代码可以获取到,如: 其 ...
- 使用 jQuery 进行前端验证
前段验证脚本的教程,其基础为jQuery的插件validate. 一.可以验证哪些信息 要求输入不能为空 要求输入格式必须为电子邮箱 要求输入格式必须为URL 要求输入格式必须为日期 要求输入格 ...
- mysql数据库----索引原理与慢查询优化
一.介绍 1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语 ...