dataSource使用时报错解决Mark下

本文介绍了一个关于dataSource配置中使用commons-dbcp 1.4版本与commons-pool 1.0版本不兼容的问题,并提供了将commons-pool升级到1.4版本以解决NoSuchMethodError异常的具体方案。

dataSource依赖的commons-dbcp使用的是1.4的版本,而commons-pool使用的是1.0,导致

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.pool.impl.GenericObjectPool: method <init>()V not found

这样的错!

 

commons-pool修改为1.4解决问题!!!!

Spring Boot加载数据库配置出现 `Datasource DatasourceClassName` 报错,原因通常是Spring Boot默认加载 `org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration` 类注入 `dataSource` bean,但工程中缺少相关配置信息,导致创建 `dataSource` bean因信息缺失而报错[^1]。以下是一些解决办法: ### 检查并补充数据库配置信息 在 `application.yml` 或 `application.properties` 中补充完整的数据库连接信息,示例如下: ```yaml spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost/database?useUnicode=true&characterEncoding=utf8 username: root password: root hikari: minimum-idle: 10 idle-timeout: 30000 maximum-pool-size: 20 max-lifetime: 120000 connection-timeout: 30000 ``` 此配置提供了MySQL数据库的驱动类、连接URL、用户名、密码以及Hikari连接池的相关配置[^4]。 ### 手动定义 `DataSource` Bean 在 `Application` 类或配置类中手动定义 `DataSource` Bean,并指定配置前缀,示例代码如下: ```java import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.zaxxer.hikari.HikariDataSource; @Configuration public class DataSourceConfig { @Bean @ConfigurationProperties(prefix = "app.datasource") public DataSource dataSource(){ return DataSourceBuilder.create().type(HikariDataSource.class).build(); } } ``` 这里使用 `@ConfigurationProperties` 注解将配置文件中以 `app.datasource` 为前缀的属性绑定到 `DataSource` Bean上[^3]。 ### 检查手动注册的 `DataSource` Bean 若项目中手动注册了 `DataSource` Bean,可能会导致 `dynamic-datasource` 等自动装配机制失效。需检查代码中是否存在类似手动注册的情况,如: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.jdbc.core.JdbcTemplate; import javax.sql.DataSource; @Configuration @Primary public class DataBaseConfig { @Bean("master") @Primary @ConfigurationProperties("spring.datasource") public DataSource dataSource() { // 具体实现 return null; } } @Configuration public class JdbcTemplateConfig { @Bean public JdbcTemplate jdbcTemplate(@Qualifier("master") DataSource dataSource) { return new JdbcTemplate(dataSource); } } ``` 若存在手动注册,可根据实际情况调整或移除手动注册的 `Bean`,让Spring Boot的自动装配机制正常工作[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值