简介

ShardingSphere 提供 JDBC 驱动,开发者可以在 Spring Boot 中配置 ShardingSphereDriver 来使用 ShardingSphere。

使用步骤

引入 Maven 依赖

  1. <dependency>
  2. <groupId>org.apache.shardingsphere</groupId>
  3. <artifactId>shardingsphere-jdbc-core</artifactId>
  4. <version>${shardingsphere.version}</version>
  5. </dependency>

配置 Spring Boot

  1. # 配置 DataSource Driver
  2. spring.datasource.driver-class-name=org.apache.shardingsphere.driver.ShardingSphereDriver
  3. # 指定 YAML 配置文件
  4. spring.datasource.url=jdbc:shardingsphere:classpath:xxx.yaml

spring.datasource.url 中的 YAML 配置文件当前支持通过两种方式获取,绝对路径 absolutepath: 以及 CLASSPATH classpath:,具体可参考 org.apache.shardingsphere.driver.jdbc.core.driver.ShardingSphereURLProvider 的实现。

使用数据源

直接使用该数据源;或者将 ShardingSphereDataSource 配置在 JPA、Hibernate、MyBatis 等 ORM 框架中配合使用。

针对 Spring Boot OSS 3 的处理

Spring Boot OSS 3 对 Jakarta EE 和 Java 17 进行了 “大爆炸” 升级,涉及大量复杂情况。

ShardingSphere 的 XA 分布式事务尚未在 Spring Boot OSS 3 上就绪,此限制同样适用于其他基于 Jakarta EE 9+ 的 Web Framework,如 Quarkus 3,Micronaut Framework 4 和 Helidon 3。

用户仅需要配置如下。

  1. <project>
  2. <dependencies>
  3. <dependency>
  4. <groupId>org.apache.shardingsphere</groupId>
  5. <artifactId>shardingsphere-jdbc-core</artifactId>
  6. <version>${shardingsphere.version}</version>
  7. </dependency>
  8. </dependencies>
  9. </project>

针对低版本的 Spring Boot OSS 2 的特殊处理

ShardingSphere 的所有特性均可在 Spring Boot OSS 2 上使用,但低版本的 Spring Boot OSS 可能需要手动指定 SnakeYAML 的版本为 2.2 。 这在 Maven 的 pom.xml 体现为如下内容。

  1. <project>
  2. <dependencies>
  3. <dependency>
  4. <groupId>org.apache.shardingsphere</groupId>
  5. <artifactId>shardingsphere-jdbc-core</artifactId>
  6. <version>${shardingsphere.version}</version>
  7. </dependency>
  8. <dependency>
  9. <groupId>org.yaml</groupId>
  10. <artifactId>snakeyaml</artifactId>
  11. <version>2.2</version>
  12. </dependency>
  13. </dependencies>
  14. </project>

如果用户是通过 https://start.spring.io/ 创建了 Spring Boot 项目,则可通过如下内容来简化配置。

  1. <project>
  2. <properties>
  3. <snakeyaml.version>2.2</snakeyaml.version>
  4. </properties>
  5. <dependencies>
  6. <dependency>
  7. <groupId>org.apache.shardingsphere</groupId>
  8. <artifactId>shardingsphere-jdbc-core</artifactId>
  9. <version>${shardingsphere.version}</version>
  10. </dependency>
  11. </dependencies>
  12. </project>