1. 程式人生 > >springboot配置多資料來源並整合Druid

springboot配置多資料來源並整合Druid

1.application.properties配置檔案

spring.datasource.type = com.alibaba.druid.pool.DruidDataSource

#----DS1----

spring.datasource.primary.url=jdbc:sqlserver://127.0.0.1:1433;databasename=test1

spring.datasource.primary.username=sa

spring.datasource.primary.password=123456

#----DS2---

spring.datasource.se

condary.url=jdbc:sqlserver://127.0.0.1:1433;databasename=test2

spring.datasource.secondary.username=sa

spring.datasource.secondary.password=123456

#DS3

spring.datasource.third.url=jdbc:sqlserver://127.0.0.1:1433;databasename=test3

spring.datasource.third.username=sa

spring.datasource.third.password=123456


#---------------------------------------------------------------------------------------

spring.datasource.primary.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

spring.datasource.secondary.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

spring.datasource.third.driver-class-name

=com.microsoft.sqlserver.jdbc.SQLServerDriver

spring.datasource.druid.initial-size = 5

spring.datasource.druid.max-active = 20

spring.datasource.druid.min-idle = 5

spring.datasource.druid.max-wait= 30000

以上為最基本配置。

注:druid如果不配置Filter,預設是開啟的,譬如web-stat-filter、stat-view-servlet等,可以通過配置屬性覆蓋預設配置,例如:

# WebStatFilter monitor

spring.datasource.druid.web-stat-filter.enabled=true

spring.datasource.druid.web-stat-filter.url-pattern= \*

spring.datasource.druid.web-stat-filter.exclusions= *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*

spring.datasource.druid.web-stat-filter.session-stat-enable= false

spring.datasource.druid.web-stat-filter.session-stat-max-count= 1000

#\u76D1\u63A7\u5355\u4E2Aurl\u8C03\u7528\u7684sql\u5217\u8868

spring.datasource.druid.web-stat-filter.profile-enable=true


# StatViewServlet ,it configs who can visit

spring.datasource.druid.stat-view-servlet.enabled= true

spring.datasource.druid.stat-view-servlet.url-pattern= /druid/*

spring.datasource.druid.stat-view-servlet.reset-enable= true

spring.datasource.druid.stat-view-servlet.login-username= admin

spring.datasource.druid.stat-view-servlet.login-password= admin123

spring.datasource.druid.stat-view-servlet.allow= 127.0.0.1

如果設定了StatViewServlet,即配置了監控池認證,要進監控池需要輸入http://127.0.0.1:8083/druid/login.html,如果沒配置,直接輸入http://127.0.0.1:8083/druid/即可

接下來是正式的資料來源配置:
package cn.do1shoje.config;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
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 org.springframework.jdbc.core.JdbcTemplate;

import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
/**
 * 多資料來源,整合druid
 * @author shoje
 *
 */
@Configuration
public class DSConfig {
    @Bean(name = "primaryDataSource")
    @Qualifier("primaryDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.primary")
    public DataSource primaryDataSource(){
        return DruidDataSourceBuilder.create().build();
        //return DataSourceBuilder.create().build();
    }

    @Bean(name = "secondaryDataSource")
    @Qualifier("secondaryDataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.secondary")

    public DataSource secondaryDataSource(){
    	    return DruidDataSourceBuilder.create().build();
        //return DataSourceBuilder.create().build();
    }
    @Bean(name = "thirdDataSource")
    @Qualifier("thirdDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.third")
    public DataSource thirdDataSource(){
    	    return DruidDataSourceBuilder.create().build();
        //return DataSourceBuilder.create().build();
    }

    @Bean(name = "primaryJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource")DataSource dataSource){
        return new JdbcTemplate(dataSource);
    }

    @Bean(name = "secondaryJdbcTemplate")
    public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource")DataSource dataSource){
        return new JdbcTemplate(dataSource);
    }
    @Bean(name = "thirdJdbcTemplate")
    public JdbcTemplate thirdJdbcTemplate(@Qualifier("thirdDataSource")DataSource dataSource){
        return new JdbcTemplate(dataSource);
    }
}
這裡我使用時遇到一個問題,就是構建DataSource時,一直用的JDBC的DataSourceBuilder在構建資料來源,然後發覺怎麼檢視日誌都發現Druid沒有生效,一開始我是沒有發覺的,因為用DBC的DataSourceBuilder在構建資料來源,程式是正常的,呼叫資料庫也是正常的,只是druid未生效而已,直到我檢視druid的監控池後,才發現這個druid未生效,為什麼呢?因為druid監控池中的幾個指標全是空的,連資料來源那個指標都是空的,當即判斷,druid未生效。改用DruidDataSourceBuilder構建資料來源即解決springboot整合多資料來源和Druid的問題。

資料來源配置完了,則是使用問題。

@RestController
@RequestMapping("/api/v1")
public class InfoController {
	private Logger log = LoggerFactory.getLogger(InfoController.class);
	private static final String DEFAULT_PAGE_START = "0";
	private static final String DEFAULT_PAGE_SIZE = "10";
	@Autowired
	@Qualifier("primaryJdbcTemplate")
	private JdbcTemplate jt;
	@Autowired
	@Qualifier("secondaryJdbcTemplate")
	private JdbcTemplate jt2;}

在需要使用的地方直接注入,即可。

相關推薦

springboot配置資料來源整合Druid

1.application.properties配置檔案 spring.datasource.type = com.alibaba.druid.pool.DruidDataSource #----DS1---- spring.datasource.primary.u

Spring Boot配置資料來源實現Druid自動切換

SpringBoot多資料來源切換,先上配置檔案: 1.pom: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

SpringBoot配置資料來源(結合Druid

在單資料來源的情況下,Spring Boot的配置非常簡單,只需要在application.properties檔案中配置連線引數即可。但是往往隨著業務量發展,我們通常會進行資料庫拆分或是引入其他資料庫,從而我們需要配置多個數據源,下面介紹多資料來源的配置方式。

SpringBoot配置資料來源(druid)

分析 spring本身是支援多資料來源動態切換的,AbstractRoutingDataSource這個抽象類就是spring提供的一個數據源路由的一個入口,該抽象類暴露了一個determineCurrentLookupKey()的方法,該方法返回值是Object,該返回值作為key

SSM整合系列之 配置資料來源實現手動切換資料來源可實現讀寫分離

摘要:在之前的開發中有很多場景用到了多資料來源的情況,如在做資料冷熱遷移的時候,將冷資料遷移到另一個庫,查詢冷資料時需要切換資料庫;在和天貓京東等電商對接時,因為有多套系統在同時使用,在客戶授權時,需要根據客戶使用的版本,儲存到對應的資料庫中。基於此,在這裡呢簡單實現一個SSM系統的多資

springboot配置資料來源之Spring Date JPA

多資料來源在專案開發中是經常遇到的,如果同一個專案的不同模組使用的是不同資料庫,就需要多資料來源的處理。現在先寫之前使用JPA的時候遇到多資料來源的配置,後續可能再來個關於mybatis的多資料來源配置。 現在有這樣的需求,專案中有兩個模組,分別是flow與imap,flow需要使用預設資料

springboot配置資料來源(MongoDB主從)

相信看過上一篇文章的小夥伴已經知道了, 這章要講的就是MongoDB主從配置。 在這邊文章中,你將要學到的是在專案中配置主從資料庫,並且相容其他資料庫喲。。這些都是博主專案中需要並且比較重要的知識哦~ 好了,廢話不多說,直接進主題。 1.pom依賴 <depende

springboot配置資料來源(不同DB)

springBoot整合Mysql+MongoDB 因為在專案中需要用到兩個不同的資料來源。但是又不存在於一個DB中。讓我很是苦惱,不得已只能整合多資料來源。 博主文筆不好,只能講乾貨了。。 目標: 使用springBoot整合mys

手把手教你用springboot配置資料來源

<project xmlns="http://maven.apache.org/POM/4.0.0"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache

SpringBoot配置資料來源(MySQL+SQLServer)

SpringBoot 版本 1.5.13.RELEASE,以下maven依賴中包含jpa、web、mysql驅動、sqlserver驅動、測試模組。(按需新增) <parent> <groupId>org.springframework.

springboot配置資料來源,註解操作資料庫

最近新搭建了一個專案,需要去不同的資料庫中查詢資料,需要多個數據源,在網上搜索了下,基本上實現都很複雜,下面我自己實現了一個很簡單的配置方法。 1、原來我們都是在application.yml檔案中配置資料來源,現在不需要在application.yml檔案中配置了。   &n

springboot 配置資料來源

1.首先在建立應用物件時引入autoConfig @ComponentScan @EnableAutoConfiguration public class Application extends SpringBootServletInitializer { public

springboot配置資料來源 mybatis

application.yml配置 spring.datasource.primary.url=jdbc:mysql://192.168.10.109:3306/demo spring.datasource.primary.username=root spring.dat

springboot配置資料來源java.lang.IllegalArgumentException: At least one JPA metamodel must be present!

前言      springboot 專案啟動時遇到問題: At least one JPA metamodel must be present! ,怎麼解決的呢,下面來一起看下。 正文 問題再現

SpringBoot配置資料來源

SpringBoot下配置多資料來源,有的時候我們的專案可能需要從不同的資料來源獲取或者操作資料,這個時候就需要配置多資料來源; 環境 Spring-Boot 1.5.3.RELEASE 、JDK1.8、HikariDataSource 搭建SpringBoot

SpringBoot2 配置資料來源整合MybatisPlus增強外掛

本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、專案案例簡介 1、多資料簡介 實際的專案中,經常會用到不同的資

springboot整合Mybatis配置資料來源

springboot配置多資料來源有好幾種方式 1.application.properties配置 ## 埠 server.port=8080 # 資料庫訪問配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spri

springboot 配置druid資料來源

由於專案需要進行資料表水平拆分,需要將原來一個表的資料拆分成兩個庫,根據自增ID進行取模,為0的路由在DB0,為1的路由在DB1,所有就需要配置三個資料來源。 專案環境:SpringBoot2x,jdk8 pom.xml 引入需要的包 <dependenc

SpringBoot整合MybatisPlus配置資料來源

首先建立SpringBoot專案,匯入web模組; 匯入依賴: <!--aop--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId

SpringBoot+Mybatis+ Druid+PageHelper 實現資料來源分頁

前言 本篇文章主要講述的是SpringBoot整合Mybatis、Druid和PageHelper 並實現多資料來源和分頁。其中SpringBoot整合Mybatis這塊,在之前的的一篇文章中已經講述了,這裡就不過多說明了。重點是講述在多資料來源下的如何配置使用Druid和PageHelper 。 Druid