Spring Boot集成MyBatis Plus与ShardingSphere数据源配置失败求助
Spring Boot集成ShardingSphere主从读写分离启动失败:DataSource配置异常
我正在使用Spring Boot 3.1.4框架集成MyBatis Plus 3.5.3和ShardingSphere 4.1.0,实现MySQL一主一从读写分离。主库部署在本地localhost:3306,从库通过Docker映射到localhost:3309,两个数据库均为MySQL 8.0+版本,本地可正常登录。
启动项目时出现如下错误:
描述:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
原因:Failed to determine a suitable driver class
项目配置信息
application.yml
server: port: 8080 spring: shardingsphere: datasource: names: master,slave master: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/rw?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: 5508769123 slave: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3309/rw?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: 5508769123 sharding: masterslave: load-balance-algorithm-type: round_robin name: dataSource master-data-source-name: master slave-data-source-names: slave props: sql: show: true main: allow-bean-definition-overriding: true mybatis-plus: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: id-type: ASSIGN_ID
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.4</version> <relativePath/> </parent> <groupId>com.mercurows</groupId> <artifactId>rw_demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>rw_demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.22</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3</version> <!-- <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </exclusion> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </exclusion> <exclusion> <artifactId>spring-boot-autoconfigure</artifactId> <groupId>org.springframework.boot</groupId> </exclusion> <exclusion> <artifactId>spring-boot-autoconfigure</artifactId> <groupId>org.springframework.boot</groupId> </exclusion> </exclusions> --> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>2.0.39</version> </dependency> <!-- 导入读写分离坐标 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <!-- <version>4.0.0-RC1</version> --> <version>4.1.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
主启动类
package com.mercurows; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; // import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; import lombok.extern.slf4j.Slf4j; @Slf4j // @SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class) // @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) @SpringBootApplication public class RwDemoApplication { public static void main(String[] args) { SpringApplication.run(RwDemoApplication.class, args); log.info("项目启动成功。。。"); } }
已尝试的解决方案
- 使用
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class) - 使用
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) - 在mybatis-plus-boot-starter中添加排除依赖配置
- 修改部分依赖版本
期望项目正常启动,实现主从数据库读写分离,求可行的解决方案。
内容的提问来源于stack exchange,提问作者千葉幻凑
相关产品推荐
相关产品推荐

