org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao': Injection of resource dependencies failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/PooledObjectFactory
專案使用 org.apache.commons.dbcp2.BasicDataSource 作為連接池,DBCP2 內部依賴 commons-pool2,但專案類路徑缺少該 JAR,導致 Spring 初始化 DataSource 時找不到類,進而注入 userDao 失敗。
在 pom.xml 添加依賴:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.11.1</version> <!-- 查詢最新穩定版 -->
</dependency>
執行 mvn clean compile 或 IDE 重新導入 Maven 專案。
commons-pool2-2.x.jar(Maven Central 搜尋)。WEB-INF/lib 或構建路徑庫中。userDao 成功注入 JdbcTemplate,資料庫操作正常。NoClassDefFoundError 多為運行時缺少依賴,檢查 mvn dependency:tree 確認傳遞依賴是否被排除。commons-pool2 版本需匹配,查閱 DBCP 釋出說明。補全缺失依賴,Spring JDBC 連接池即可正常工作。