SpringBoot2整合JOOQ+MariaDB报错找不到javax.sql.DataSource类型Bean
问题排查与解决思路
以下是按优先级从高到低的排查方案:
- 方案1:删除自定义的JOOQ配置类
Spring Boot 2.x 整合spring-boot-starter-jooq已经默认完成了JOOQ的全量自动配置,包含DataSourceConnectionProvider、DefaultDSLContext、SQLDialect适配等逻辑都无需手动配置,你自定义的MariaDbConfig属于多余配置,很可能是导致依赖注入顺序异常的直接原因,删除该配置类后直接在业务代码注入DSLContext即可正常使用。 - 方案2:补充
spring-boot-starter-jdbc依赖
部分版本的spring-boot-starter-jooq没有传递依赖JDBC启动器,没有该依赖时Spring Boot不会触发DataSource自动配置逻辑,在pom.xml中添加以下依赖即可:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
- 方案3:检查启动类注解配置
检查启动类上的@SpringBootApplication或@EnableAutoConfiguration注解是否排除了DataSourceAutoConfiguration,如果有类似exclude = {DataSourceAutoConfiguration.class}的配置,将其删除即可。 - 方案4:修正手动定义DataSource的问题
如果你坚持手动定义DataSource,注意两个配置项:- 确保定义DataSource的方法所在类添加了
@Configuration注解,且该类在Spring包扫描范围内 - 导入正确的
DataSourceBuilder包:org.springframework.boot.jdbc.DataSourceBuilder,不要导错第三方包
- 确保定义DataSource的方法所在类添加了
- 方案5:检查配置文件加载逻辑
确认当前激活的Spring Profile是否加载了包含datasource配置的application.yml,若存在多环境配置文件,确保对应环境的配置里有完整的datasource配置。 - 附加优化项:你的JOOQ代码生成配置中的
parseDialect配置为SQLSERVER不符合你使用MariaDB的场景,修改为MARIADB即可避免代码生成阶段的方言解析异常。
内容的提问来源于stack exchange,提问作者jcomouth
相关产品推荐
相关产品推荐

