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 ...
随机推荐
- 搭建简单的Habernate环境(一)
一.开篇 下载Habernate所需要的jar包和mysql驱动. 二.建立java项目并且导入所需要的包 三.建立实体类和配置映射文件 user实体类 package testPackage; pu ...
- JavaScript系列--浅析原型链与继承
一.前言 继承是面向对象(OOP)语言中的一个最为人津津乐道的概念.许多面对对象(OOP)语言都支持两种继承方式::接口继承 和 实现继承 . 接口继承只继承方法签名,而实现继承则继承实际的方法.由于 ...
- JQuery事件绑定,bind与on区别
jquery事件绑定bind:向匹配元素添加一个或多个事件处理器 $(selector).bind("click",data,function); live:向当前或未来的匹配元素 ...
- tp5控制器调用,方法调用
<?php //命名空间 namespace app\index\controller; use app\admin\controller\Deer; class User{ public ...
- Python中int,bool,str,格式化,少量is,已经for循环练习
1.整数 十进制转化为二进制 xxx.bit_length(). #求十进制数转化成二进制时所占用的位数 2.布尔值 bool # 布尔值 - - 用于条件使用 True 真 Fa ...
- Python内置数据结构之字典dict
1. 字典 字典是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下.键可能是数(整数索引).字符串或元组.字典(日常生活中的字典和Python字典)旨在让你能够轻松地找到特定的单 ...
- 路飞学城Python-Day36
24-记录的增删改查 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); 语法二: INSERT I ...
- zoj 3471 Most Powerful(状压dp+Tsp问题+连续性问题)
上来直接一波敲键盘,直接套Tsp问题的代码 然后WA 发现貌似这道题没有连续性. Tsp问题是一条路径,一个点到另一个点,多了一个限制,所以就需要加多一维 而这道题没有限制,也就是说那一维不需要加,我 ...
- JAVA 重载方法,参数为NULL时,调用的处理 (精确性原则)
引子:大家可以思考一下下面程序的输出结果 public class TestNull { public void show(String a){ System.out.println("St ...
- Jenkins学习总结(5)——免费DevOps开源工具简介
一:开发工具 1.版本控制系统 Git Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. 2.代码托管平台 GitLab GitLab是一个利用Ruby on ...