Funktionsmerkmale:
Unterstützt die Gruppierung von Datenquellen, geeignet für eine Vielzahl von Szenarien, reines Lesen und Schreiben mehrerer Datenbanken Trennung, ein Master und mehrere aus dem Mischmodus.
Unterstützt den Start ohne Datenquelle und unterstützt die Konfiguration der Lazy-Startup-Datenquelle (3.3.2+).
Unterstützt die Verschlüsselung sensibler Datenbank-Konfigurationsinformationen ENC().
Unterstützt die unabhängige Initialisierung des Tabellenstrukturschemas und der Datenbankdatenbank für jede Datenbank.
unterstützt benutzerdefinierte Anmerkungen und muss DS (3.2.0+) erben.
Bietet schnelle Integration für Druid, Mybatis-Plus, P6sy, Jndi.
Vereinfachen Sie die Konfiguration von Druid und HikariCp und stellen Sie eine globale Parameterkonfiguration bereit. Einmal konfigurieren und global nutzen.
Bietet maßgeschneiderte Datenquellenlösungen.
bietet eine Lösung zum dynamischen Hinzufügen und Entfernen von Datenquellen nach Projektstart.
Bietet eine reine Lese-/Schreib-Trennlösung in der Mybatis-Umgebung.
Stellt eine Methode zum Parsen des Datenquellenschemas unter Verwendung dynamischer SpEL-Parameter bereit. Integriertes Spiel, Sitzung, Header, Support-Anpassung.
Unterstützt die verschachtelte Umschaltung mehrschichtiger Datenquellen. (ServiceA >>> ServiceB >>> ServiceC).
Bietet Lösungen, Vorsichtsmaßnahmen und Beispiele für die Integration von Bibliotheken von Drittanbietern wie Shiro, Sharding-JDBC, Quartz usw.
Bietet eine verteilte Transaktionslösung basierend auf Seata. Anhang: Native Spring-Transaktionen werden nicht unterstützt.
Bietet lokale Transaktionslösungen mit mehreren Datenquellen. Anhang: Native Spring-Transaktionen (3.3.1+) werden nicht unterstützt.
Unser Artikel implementiert hauptsächlich die Trennung von Lesen und Schreiben sowie eine Umgebung mit einem Master und mehreren Slaves.
Es wird empfohlen, dass die Hauptdatenbank nur INSERT-, UPDATE- und DELETE-Vorgänge ausführt.
Es wird empfohlen, nur SELECT-Operationen aus der Datenbank auszuführen.
1. Bereiten Sie die Datenbank vor
Hauptdatenbank: PiaoDB
# 🎜 🎜# Aus Datenbank 1: PiaoDB2 🎜#2. Importieren Sie die POM-Datei
#🎜 🎜#Führen Sie den Dynamic-Datasource-Spring-Boot-Starter ein.
<!-- 多数据源 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.3.2</version> </dependency>
3. Bearbeiten Sie die Konfigurationsdatei
Wir haben eine Master-Bibliothek und zwei Slave-Bibliotheken konfiguriert.
Der „Header“ aller durch Unterstrich _ getrennten Datenquellen in der Konfigurationsdatei ist der Name der Gruppe Datenquellen mit demselben Gruppennamen werden in einer Gruppe weiter unten platziert.
Der Standardname der Datenquelle ist „Master“, den wir über spring.datasource.dynamic.primary ändern können.
- Andere Integrationsadressen von Drittanbietern: Integrated Druid
spring: datasource: dynamic: primary: master #设置默认的数据源或者数据源组,默认值即为master strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源. datasource: master: url: jdbc:mysql://localhost:3306/PiaoDB?serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置 slave_1: url: jdbc:mysql://localhost:3306/PiaoDB2?serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.jdbc.Driver slave_2: url: jdbc:mysql://localhost:3306/PiaoDB3?serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.jdbc.DriverNach dem Login kopierenDa wir den Alibaba-Datenbankverbindungspool Druid verwenden, müssen wir die Schnellkonfigurationsklasse des nativen Druid ausschließen.
- Zusätzlich zur Konfiguration eines Masters und mehrerer Slaves können wir ihn auch konfigurieren.
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }Nach dem Login kopierenEinige SpringBoot-Versionen sind möglicherweise nicht ausgeschlossen und können auf folgende Weise ausgeschlossen werden.
spring: autoconfigure: exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigureNach dem Login kopieren# 多主多从 纯粹多库(记得设置primary) 混合配置 spring: spring: spring: datasource: datasource: datasource: dynamic: dynamic: dynamic: datasource: datasource: datasource: master_1: mysql: master: master_2: oracle: slave_1: slave_1: sqlserver: slave_2: slave_2: postgresql: oracle_1: slave_3: h3: oracle_2:Nach dem Login kopieren
4. Code schreiben
Verwenden Sie @DS, um die Datenquelle zu wechseln. @DS kann für Methoden und Klassen mit Anmerkungen versehen werden. Wenn beide vorhanden sind, haben Methodenanmerkungen Vorrang vor Klassenanmerkungen. Es wird dringend empfohlen, die Service-Implementierung oder die Mapper-Schnittstellenmethode mit Anmerkungen zu versehen.@DS("xxx") gibt die Datenquelle xxx an, wobei xxx ein Gruppenname oder der Name einer bestimmten Bibliothek sein kann. Wenn es sich um einen Gruppennamen handelt, wird beim Umschalten der Lastausgleichsalgorithmus verwendet. Wenn der angegebene Gruppenname oder die angegebene Bibliothek nicht vorhanden ist, wird automatisch die Standarddatenquelle (Hauptbibliothek) verwendet.
Wenn kein @DS vorhanden ist, wird die Standarddatenquelle ( Hauptbibliothek) wird verwendet
Erste Anfrage:
- Wenn @DS gesetzt ist, aber keine Gruppe oder Bibliothek angegeben ist, wird eine Slave-Bibliothek basierend auf der DynamicDataSourceStrategy-Strategie ausgewählt. Standardrichtlinie für den Lastausgleich. #?
5. Verifizierungsergebnisse@RestController @RequiredArgsConstructor @RequestMapping("/demo") public class DemoController { private final DemoService demoService; @GetMapping("/add") public String add() { return demoService.add(null) + ""; } @GetMapping("/selectGoodsInfo") public List<GoodsInfo> selectGoodsInfo(){ return demoService.selectGoodsInfo(); } @GetMapping("/selectMasterGoodsInfo") public List<GoodsInfo> selectMasterGoodsInfo(){ return demoService.selectMasterGoodsInfo(); } }Nach dem Login kopierenpublic interface DemoService { boolean add(GoodsInfo param); List<GoodsInfo> selectGoodsInfo(); List<GoodsInfo> selectMasterGoodsInfo(); }Nach dem Login kopieren- 1. Anfrage zum Hinzufügen einer neuen Schnittstelle (Daten zur Hauptdatenbank hinzufügen): 127.0.0.1: 8086/demo /add
- 2. Anfrage zur Abfrage der Hauptdatenbank-Datenschnittstelle: 127.0.0.1:8086/demo/selectMasterGoodsInfo
# 🎜🎜#3. Slave-Datenschnittstelle anfordern (Lastausgleich):
Zweite Anfrage: #🎜 🎜#
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Dynamic Datasource zum Konfigurieren mehrerer Datenquellen in SpringBoot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!