SpringBoot如今是不少不少公司应用的后端框架,Spring Boot是一个便捷搭建 基于spring工程的脚手架;做用是帮助开发人员快速搭建大型的spring 项目。简化工程的配置,依赖管理;实现开发人员把时间都集中在业务开发上。如今呢咱们就来聊一聊使用Spring Boot如何接入并使用多个数据源的问题.这里呢我只写一些主要的DataSource配置类.java
这里先准备新建一个干净的SpringBoot项目作一个demo(springboot版本我这里选择的是2.2.2)mysql
-
-
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-parent</artifactId>
-
<version>2.2.2.RELEASE</version>
-
引入主要pom文件以下:web
-
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-web</artifactId>
-
-
-
<groupId>org.mybatis.spring.boot</groupId>
-
<artifactId>mybatis-spring-boot-starter</artifactId>
-
-
-
-
-
<artifactId>mysql-connector-java</artifactId>
-
-
新建application.yml配置文件,设置数据源信息spring
-
- #ty_bigdata
- spring.datasource.test1.jdbcUrl = jdbc:mysql://127.0.0.1:3306/test1?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8
- spring.datasource.test1.username = root
- spring.datasource.test1.password = root
- spring.datasource.test1.driverClassName = com.mysql.jdbc.Driver
- #test2数据库的配置
- spring.datasource.test2.jdbcUrl = jdbc:mysql://127.0.0.1:3306/test2?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8
- spring.datasource.test2.username = root
- spring.datasource.test2.password = root
- spring.datasource.test2.driverClassName = com.mysql.jdbc.Driver
在项目目录下新建config包,用于放数据源配置类:sql
在config包下新建DataSource1Config类:数据库
-
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.mybatis.spring.SqlSessionFactoryBean;
- import org.mybatis.spring.SqlSessionTemplate;
- import org.mybatis.spring.annotation.MapperScan;
- 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.jdbc.datasource.DataSourceTransactionManager;
-
- import javax.sql.DataSource;
-
- @Configuration
- @MapperScan(basePackages = "cn.vernall.mapper.test1", sqlSessionFactoryRef = "test1SqlSessionFactory")
- public class DataSource1Config {
- @Bean(name = "test1DataSource")
- @ConfigurationProperties(prefix = "spring.datasource.test1")
- @Primary
- public DataSource testDataSource() {
- return DataSourceBuilder.create().build();
- }
-
- @Bean(name = "test1SqlSessionFactory")
- @Primary
- public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource) throws Exception {
- SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
- bean.setDataSource(dataSource);
- return bean.getObject();
- }
-
- @Bean(name = "test1TransactionManager")
- @Primary
- public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource") DataSource dataSource) {
- return new DataSourceTransactionManager(dataSource);
- }
-
- @Bean(name = "test1SqlSessionTemplate")
- @Primary
- public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
- return new SqlSessionTemplate(sqlSessionFactory);
- }
}
其中@primary注解是用来表示当前数据源为默认数据源,没有特别指定的状况下项目使用的数据源为被该注解修饰的数据源,@primary必须要有而且只能修饰一个数据源,否则会有异常.apache
在config包下新建DataSource2Config类后端
import org.apache.ibatis.session.SqlSessionFactoryspringboot
import org.mybatis.spring.SqlSessionFactoryBean;session
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
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.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "cn.vernall.mapper.test2", sqlSessionFactoryRef = "test2SqlSessionFactory")
public class DataSource2Config {
@Bean(name = "test2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.test2")
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "test2SqlSessionFactory")
@Primary
public SqlSessionFactory testSqlSessionFactory(@Qualifier("test2DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
@Bean(name = "test2TransactionManager")
@Primary
public DataSourceTransactionManager testTransactionManager(@Qualifier("test2DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "test2SqlSessionTemplate")
@Primary
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
springboot项目整合数据源到此结束,欢迎各位大神补充修改