spring boot 配置双数据源mysql、sqlServer
背景:原来一直都是使用mysql数据库,在application.properties 中配置数据库信息
spring.datasource.url=jdbc:mysql://xxxx/test
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=xxx
spring.datasource.password=xxx
这样spring boot会自动化配置,我们用spring boot 约定的配置,现在由于业务的需要,另加一个数据源sqlServer。下面是具体步骤以及遇到的一系列问题。
- pom.xml文件:
- <dependency>
- <groupId>com.microsoft.sqlserver</groupId>
- <artifactId>mssql-jdbc</artifactId>
- <version>6.4.0.jre8</version>
- <scope>runtime</scope>
- </dependency>
- spring.datasource.second.jdbc-url=jdbc:sqlserver://xxxxx:1433;DatabaseName=test
- spring.datasource.second.username=xxx
- spring.datasource.second.password=xxxx
- spring.datasource.second.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
- 注意1:连接数据库的方式不一样,mysql是/test ,sqlServer是;DatabaseName=test
- spring.datasource.url=jdbc:mysql://xxxx/test
- spring.datasource.second.jdbc-url=jdbc:sqlserver://xxxxx:1433;DatabaseName=test
- package com.ieou.qmt.common;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.mybatis.spring.SqlSessionFactoryBean;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.boot.jdbc.DataSourceBuilder;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
- import org.springframework.core.io.support.ResourcePatternResolver;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import org.springframework.transaction.PlatformTransactionManager;
- import javax.sql.DataSource;
- @Configuration
- public class SqlServerDataSourceConfig {
- @Bean(name = "sqlServerDataSource")
- @Qualifier("sqlServerDataSource")
- @ConfigurationProperties(prefix="spring.datasource.second")
- public DataSource getMyDataSource(){
- return DataSourceBuilder.create().build();
- }
- @Bean(name = "secondaryJdbcTemplate")
- public JdbcTemplate secondaryJdbcTemplate(
- @Qualifier("sqlServerDataSource") DataSource dataSource) {
- return new JdbcTemplate(dataSource);
- }
- }
总结:
- "org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type
- 'org.springframework.transaction.PlatformTransactionManager' available\n\tat
- org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:347)\n\tat
- org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:334)\n\tat
- org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManage
- spring.datasource.first.jdbc-url=jdbc:mysql://xxxx:3306/test
- (这里要是jdbc-url,不然会报jdbcUrl is required with driverClassName的错误)
- spring.datasource.first.type=com.alibaba.druid.pool.DruidDataSource
- spring.datasource.first.driver-class-name=com.mysql.jdbc.Driver
- spring.datasource.first.username=xxx
- spring.datasource.first.password=xxx
- spring.datasource.second.jdbc-url=jdbc:sqlserver://xxxx:1433;DatabaseName=test
- spring.datasource.second.username=xxx
- spring.datasource.second.password=xxx
- spring.datasource.second.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
- package com.ieou.qmt.common;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.mybatis.spring.SqlSessionFactoryBean;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.boot.jdbc.DataSourceBuilder;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
- import org.springframework.core.io.support.ResourcePatternResolver;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import org.springframework.transaction.PlatformTransactionManager;
- import javax.sql.DataSource;
- @Configuration
- public class SqlServerDataSourceConfig {
- private static final String MAPPER_PATH = "classpath:mybatis/mapping/mapper/*.xml";
- private static final String ENTITY_PACKAGE = "com.ieou.qmt.mapper";
- @Bean(name = "sqlServerDataSource")
- @Qualifier("sqlServerDataSource")
- @ConfigurationProperties(prefix="spring.datasource.second")
- public DataSource getMyDataSource(){
- return DataSourceBuilder.create().build();
- }
- @Bean(name = "secondaryJdbcTemplate")
- public JdbcTemplate secondaryJdbcTemplate(
- @Qualifier("sqlServerDataSource") DataSource dataSource) {
- return new JdbcTemplate(dataSource);
- }
- @Bean(name = "second.SqlSessionTemplate")
- public SqlSessionFactory devSqlSessionFactory(
- @Qualifier("sqlServerDataSource") DataSource ddataSource)
- throws Exception {
- final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
- sessionFactory.setDataSource(ddataSource);
- ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
- sessionFactory.setMapperLocations(resolver.getResources(MAPPER_PATH));
- sessionFactory.setTypeAliasesPackage(ENTITY_PACKAGE);
- return sessionFactory.getObject();
- }
- @Bean
- public PlatformTransactionManager sqlServerTransactionManager(@Qualifier("sqlServerDataSource") DataSource sqlServerDataSource)
- {
- return new DataSourceTransactionManager(sqlServerDataSource);
- }
- }
- package com.ieou.qmt.common;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.mybatis.spring.SqlSessionFactoryBean;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.boot.jdbc.DataSourceBuilder;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Primary;
- import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
- import org.springframework.core.io.support.ResourcePatternResolver;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import org.springframework.transaction.PlatformTransactionManager;
- import javax.sql.DataSource;
- @Configuration
- public class MysqlDataSourceConfig {
- private static final String MAPPER_PATH = "classpath:mybatis/mapping/*.xml";
- private static final String ENTITY_PACKAGE = "com.ieou.qmt.mapper";
- @Bean(name = "dataSource")
- @Primary
- @Qualifier("dataSource")
- @ConfigurationProperties(prefix="spring.datasource.first")
- public DataSource getMyDataSource(){
- return DataSourceBuilder.create().build();
- }
- @Bean(name = "first.SqlSessionTemplate")
- @Primary
- public SqlSessionFactory devSqlSessionFactory(
- @Qualifier("dataSource") DataSource ddataSource)
- throws Exception {
- final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
- sessionFactory.setDataSource(ddataSource);
- ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
- sessionFactory.setMapperLocations(resolver.getResources(MAPPER_PATH));
- sessionFactory.setTypeAliasesPackage(ENTITY_PACKAGE);
- return sessionFactory.getObject();
- }
- @Bean
- @Primary
- public PlatformTransactionManager mysqlTransactionManager(@Qualifier("dataSource") DataSource mysqlDataSource)
- {
- return new DataSourceTransactionManager(mysqlDataSource);
- }
- }
spring boot 配置双数据源mysql、sqlServer的更多相关文章
- Spring Boot配置多数据源并实现Druid自动切换
原文:https://blog.csdn.net/acquaintanceship/article/details/75350653 Spring Boot配置多数据源配置yml文件主数据源配置从数据 ...
- 如何通过Spring Boot配置动态数据源访问多个数据库
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- spring项目配置双数据源读写分离
我们最早做新项目的时候一直想做数据库的读写分离与主从同步,由于一些原因一直没有去做这个事情,这次我们需要配置双数据源的起因是因为我们做了一个新项目用了另一个数据库,需要把这个数据库的数据显示到原来的后 ...
- spring boot 2.0 配置双数据源 MySQL 和 SqlServer
参考:https://www.cnblogs.com/xiaofengfeng/p/9552816.html 安装 org.mybatis.spring.boot:mybatis-spring-boo ...
- springboot配置双数据源 MySQL和SqlServer
1. pom文件的驱动jar包加上去, compile 'com.microsoft.sqlserver:mssql-jdbc:6.2.2.jre8' 2. application.yml sprin ...
- spring+mybatis 配置双数据源
配置好后,发现网上已经做好的了, 不过,跟我的稍有不同, 我这里再拿出来现个丑: properties 文件自不必说,关键是这里的xml: <?xml version="1.0&quo ...
- spring boot 配置多数据源
https://www.jianshu.com/p/b2e53a2521fc
- Spring Boot2.4双数据源的配置
相较于单数据源,双数据源配置有时候在数据分库的时候可能更加有利 但是在参考诸多博客以及书籍(汪云飞的实战书)的时候,发现对于spring boot1.X是完全没问题的,一旦切换到spring boot ...
- Spring boot配置多个Redis数据源操作实例
原文:https://www.jianshu.com/p/c79b65b253fa Spring boot配置多个Redis数据源操作实例 在SpringBoot是项目中整合了两个Redis的操作实例 ...
随机推荐
- HTML(续)
1.有frame就无body,框架的noresize:设置框架大小不能改变.2.链接在框架中的应用target:有定为目标的功能.<a href = "链接源地址" targ ...
- bzoj 3083
bzoj 3083 树链剖分,换根 对于一颗树有以下操作 1.确定x为根,2.将u到v的简单路径上的数全改成c,3.询问当前以x为根的子树中的节点最小权值. 如果没有操作1:树链剖分很明显. 于是考虑 ...
- imageio.ffmpeg.download() has been deprecated. Use 'pip install im ageio-ffmpeg' instead.'
Use this instead: sudo pip3 install imageio==2.4.1
- IOS 苹果手机fiddler抓包时出现了tunnel to 443 解决方案,亲测有效
先上一张捉取成功图[版本需4.0以上,并非所有https数据可抓取,具体原因未知] 1.先对Fiddler进行设置[打开Fiddler ——> Options .然后打开的对话框中,选择HTTP ...
- jquery .width和css("width", )区别
1.$.fn.width会根据是否是borderBox来计算新的宽度,如果是borderBox,会额外加上padding和border的宽度,计算时只是按照px来,用rem做单位会出错: 2.$.fn ...
- Exp2_固件程序设计 20165226_20165310_20165315
Exp2_固件程序设计 20165226_20165310_20165315 Exp2_1 MDK 实验内容 注意不经老师允许不准烧写自己修改的代码 两人(个别三人)一组 参考云班课资源中" ...
- django基础 -- 2. django初识
一.模块渲染 jinja2 实现简单的字符串替换(动态页面) 1.下载 pip install jinja2 示例 : html文件中 <!DOCTYPE html> <html ...
- 前端 --- 7 Bootstrop框架
一.基本结构 1.下载地址 官方地址:https://getbootstrap.com 中文地址:http://www.bootcss.com/ 2.HTML基本搭建结构 <!DOCTYPE ...
- Restful framework【第六篇】认证组件
基本用法 -认证功能 1 写一个类,继承BaseAuthentication 2 def authenticate(self,request) ,记住传request对象 -如果验证通过,返回None ...
- SpringBoot 整合携程Apollo配置管理中心
携程官网对apollo的使用讲解了很多种方式的使用,但是感觉一些细节还是没讲全,特别是eureka配置中心地址的配置 这里对springboot整合apollo说一下 >SpringBoot启动 ...