Spring Data R2DBC连接MySQL 5.7报错:找不到r2dbcEntityTemplate bean
问题根因及修复方案
1. 修复R2DBC连接URL格式错误(核心故障点)
你的application.yaml中R2DBC连接URL的协议标识缺少冒号,导致Spring Boot无法解析出有效的连接配置,无法自动初始化ConnectionFactory核心组件,连带依赖它的r2dbcEntityTemplate也不会被自动装配,最终触发Bean缺失异常。
修正后的配置如下:
spring: r2dbc: url: r2dbc:pool:mysql://server/database?useUnicode=true&characterEncoding=UTF-8&useSSL=false&useLocalSessionState=true username: username password: password pool: enabled: true max-size: 20 validation-query: SELECT 1 initial-size: 5 max-idle-time: 30m data: r2dbc: repositories: enabled: true
注意:yaml配置文件中不需要对&符号做&转义,直接写原生符号即可。
2. 清理冗余依赖
你依赖中引入的mysql:mysql-connector-java是JDBC协议的MySQL驱动,R2DBC场景下无需使用,可以直接删除该依赖项,避免不必要的包冲突。
3. 兜底配置方案(自动装配失效时使用)
如果修正URL后仍报r2dbcEntityTemplate缺失,可手动在配置类中注册该Bean,代码如下:
import io.r2dbc.spi.ConnectionFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.r2dbc.core.R2dbcEntityTemplate; @Configuration public class R2dbcCustomConfig { @Bean public R2dbcEntityTemplate r2dbcEntityTemplate(ConnectionFactory connectionFactory) { return new R2dbcEntityTemplate(connectionFactory); } }
版本适配说明
你当前使用的Spring Boot 2.5.5 + r2dbc-mysql 0.8.2.RELEASE 版本组合不存在兼容性问题,无需调整版本。
内容的提问来源于stack exchange,提问作者chakwok
相关产品推荐
相关产品推荐

