码迷,mamicode.com
首页 > 数据库 > 详细

spring boot 多数据源配置(多种数据库)

时间:2016-06-14 17:37:05      阅读:1982      评论:0      收藏:0      [点我收藏+]

标签:

最近一段时间在使用spring boot开发项目,其中有一个项目用到了多数据源的配置,网上的资料还是不太多,走了好多才找到一个合适的,把自己写的分享一下,做个笔记,以后也许有用,第一次写博客,不好勿喷!!

首先介绍下我的业务场景,此项目用到了两种数据库,一个是mysql,另一个是sqlserver,

首先第一步需要在application.yml中将多数据源的配置信息进行配置,

mysql数据源:

spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.28.230:3306/****?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
username: ****
password: ****

sqlserver数据源配置
custom:
datasource:
names: ds1
ds1:
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://ip:1433;databaseName=数据库名称
username: ****
password: ****

第二步编写数据源的配置和加载类:
SQLserver数据源
@Configuration
@MapperScan(basePackages = RdsDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "rdsSessionFactory")
public class RdsDataSourceConfig {
static final String PACKAGE = "com.jyall.ehr.kaoqin"; //本项目中用的是mybatis,此路径为扫描的mapper的包结构
@Value("${custom.datasource.ds1.url}") //第一步中配置文件中的数据库配置信息
private String dbUrl;
@Value("${custom.datasource.ds1.username}")//同理为配置文件中信息
private String dbUser;
@Value("${custom.datasource.ds1.password}")//同理为配置文件信息
private String dbPassword;

@Bean(name = "rdsDatasource")
public DataSource rdsDataSource() {
DataSource dataSource = new DataSource();
dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
dataSource.setUrl(dbUrl);
dataSource.setUsername(dbUser);
dataSource.setPassword(dbPassword);
return dataSource;
}

@Bean(name = "rdsTransactionManager")
public DataSourceTransactionManager rdsTransactionManager(@Qualifier("rdsDatasource") DataSource adsDataSource) {
return new DataSourceTransactionManager(rdsDataSource());
}

@Bean(name = "rdsSessionFactory")
public SqlSessionFactory adsSqlSessionFactory(@Qualifier("rdsDatasource") DataSource adsDataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(adsDataSource);
return sessionFactory.getObject();
}
}

mysql数据源
@Configuration
@MapperScan(basePackages = AdsDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "adsSqlSessionFactory")
public class AdsDataSourceConfig {
static final String PACKAGE = "com.jyall.ehr.mapper"; //扫描的mapper包结构

@Value("${spring.datasource.url}") //配置文件中的配置
private String dbUrl;
@Value("${spring.datasource.username}") //配置文件中的配置
private String dbUser;
@Value("${spring.datasource.password}") //配置文件中的配置
private String dbPassword;

@Bean(name = "adsDataSource")
@Primary //此注解表示在默认的数据源配置,即在默认配置时用到的数据源配置
public DataSource adsDataSource() {
DataSource dataSource = new DataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl(dbUrl);
dataSource.setUsername(dbUser);
dataSource.setPassword(dbPassword);
return dataSource;
}

@Bean(name = "adsTransactionManager")
@Primary
public DataSourceTransactionManager adsTransactionManager(@Qualifier("adsDataSource") DataSource adsDataSource) {
return new DataSourceTransactionManager(adsDataSource);
}

@Bean(name = "adsSqlSessionFactory")
@Primary
public SqlSessionFactory adsSqlSessionFactory(@Qualifier("adsDataSource") DataSource adsDataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(adsDataSource);
return sessionFactory.getObject();
}
}
至此多数据源的配置都已经完成,其他配置跟但数据源的配置时一样的,不在赘述。。。

spring boot 多数据源配置(多种数据库)

标签:

原文地址:http://www.cnblogs.com/lenglengll/p/5584791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!