spring boot多数据源配置示例
1. application.properties
#\u4E3B\u5E93\u914D\u7F6E
spring.datasource.primary.url=jdbc:mysql://mysql.test.xxxxx.com:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.primary.type=com.zaxxer.hikari.HikariDataSource spring.datasource.secondary.url=jdbc:mysql://mysql.log.test.xxxx.com:3306/test_log?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root
spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.secondary.type=com.zaxxer.hikari.HikariDataSource
2. 配置类
2.1 datasource配置
import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
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 com.zaxxer.hikari.HikariDataSource; @Configuration
public class DataSourceConfig {
@Bean
@Qualifier("primaryDataSourceProperties")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSourceProperties primaryDataSourceProperties() {
return new DataSourceProperties();
} @Autowired
@Qualifier("primaryDataSourceProperties")
private DataSourceProperties primaryDataSourceProperties; @Bean
@Qualifier("primaryDataSource")
@Primary
public DataSource primaryDataSource() {
return primaryDataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
} ////////////////////// @Bean
@Qualifier("secondaryDataSourceProperties")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSourceProperties secondaryDataSourceProperties() {
return new DataSourceProperties();
} @Autowired
@Qualifier("secondaryDataSourceProperties")
private DataSourceProperties secondaryDataSourceProperties; @Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
public DataSource secondaryDataSource() {
return secondaryDataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
} }
2.2 主库配置
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
/*
* 主库的配置
*/
@Configuration
@MapperScan(basePackages = "com.xxxx.xxxx.mapper",sqlSessionFactoryRef = "primarySqlSessionFactory")
public class DatabaseConfig {
@Autowired
@Qualifier("primaryDataSource")
private DataSource primaryDataSource; @Bean("primarySqlSessionFactory")
@Qualifier("primarySqlSessionFactory")
@Primary
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(primaryDataSource);
return sessionFactoryBean.getObject();
}
} // class DatabaseConfig
2.3 日志库配置
import javax.sql.DataSource; import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/*
* 主库的配置
*/
@Configuration
@MapperScan(basePackages = "com.xxxx.xxxx.logmapper",sqlSessionFactoryRef = "secondarySqlSessionFactory")
public class LogDatabaseConfig{ @Autowired
@Qualifier("secondaryDataSource")
private DataSource secondaryDataSource; @Bean(name = "secondarySqlSessionFactory")
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(secondaryDataSource);
return sessionFactoryBean.getObject();
}
} // class LogDatabaseConfig
3. 使用
spring boot多数据源配置示例的更多相关文章
- Spring Boot多数据源配置(二)MongoDB
在Spring Boot多数据源配置(一)durid.mysql.jpa 整合中已经讲过了Spring Boot如何配置mysql多数据源.本篇文章讲一下Spring Boot如何配置mongoDB多 ...
- spring boot多数据源配置(mysql,redis,mongodb)实战
使用Spring Boot Starter提升效率 虽然不同的starter实现起来各有差异,但是他们基本上都会使用到两个相同的内容:ConfigurationProperties和AutoConfi ...
- spring boot(12)-数据源配置原理
本篇讲的不仅是数据源配置,这也是spring boot实现自动配置的一部分.要理解数据源的配置原理,首先要理解第十篇tomcat连接池的配置 数据源配置源码 这里截取org.springframewo ...
- spring boot 多数据源配置与使用
在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.properties文 ...
- 三、Spring Boot 多数据源配置
下面一个Java类是已经写好的根据配置文件动态创建多dataSource的代码,其原理也很简单,就是读取配置文件,根据配置文件中配置的数据源数量,动态创建dataSource并注册到Spring中. ...
- Spring Boot Druid数据源配置
package com.hgvip.config; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.su ...
- 21. Spring Boot Druid 数据源配置解析
1.数据源配置属性类源码 package org.springframework.boot.autoconfigure.jdbc; @ConfigurationProperties( prefix = ...
- Spring Boot多数据源配置与使用
在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.properties文件中配置连接参数即可.但是往往随着业务量发展,我们通常会进行数据库拆分或是引入其他数据库 ...
- Spring Boot (14) 数据源配置原理
数据源配置源码 这里截取org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration的部分源码,主要介绍Tomcat和Hika ...
随机推荐
- 杂项-项目管理:WBS(工作分解结构)
ylbtech-杂项-项目管理:WBS(工作分解结构) WBS:工作分解结构(Work Breakdown Structure) 创建WBS:创建WBS是把项目 交付成果和项目工作分解成较小的,更易于 ...
- tabBar的图标不被系统渲染
navi.tabBarItem.selectedImage = [[UIImage imageNamed:imageStr]imageWithRenderingMode:UIImageRenderin ...
- Python学习小计
1.初学Python最好选择2.7版本,因为大部分Python书籍的示例代码是基于这个版本的 2.Python安装可以参考百度经验完成 如果在电脑上同时安装2个版本,则CMD启动时只需要: py -2 ...
- Maven编译、打war包
Eclipse环境,每次alt+F5刷新Maven项目时,总是会把项目的Java依赖刷新成1.5. 解决办法:在pom中加入如下片段 <plugin> <groupId>org ...
- 如何保证 Linux 服务器的安全
如何保证 Linux 服务器的安全 2013/09/17 | 分类: IT技术 | 0 条评论 | 标签: LINUX, 服务器 分享到:53 本文由 伯乐在线 - 贾朝藤 翻译自 Spenser J ...
- 小程序(Wepy)--生成海报图片
对于小程序的分享, 除了分享给朋友, 好友群,是可以直接做到的, 但是要想扩大推广范围, 通过生成海报图片, 将自己小程序码带进去,应该是目前我所知的好办法了. 但是海报也不是那么好搞.之前自己手写出 ...
- Thinking in file encoding and decoding?
> General file encoding ways We most know, computer stores files with binary coding like abc\xe4\ ...
- Label,PushButton,ToolButton 实现动态图片按钮,Label显示gif动画
.h文件 public: explicit event(QWidget *parent = 0); ~event(); QImage image; QLabel *label; QLabel *lab ...
- (转载)springboot集成httpinvoker的客户端
原文:https://blog.csdn.net/geanwan/article/details/51505679 由于新项目采用了springboot,需要调用之前远程服务(之前项目用的spring ...
- ASP.NET-viewBag Viewdata Tempdata
ASP.NET MVC提供3种选择ViewData,ViewBag,TempData来从controller到View及后续请求传输数据. ViewData和ViewBag很相似,而TempData有 ...