spring boot 3 集成 druid 數據庫連接池及解決 Javax.servlet.http.httpservlet 錯誤
本文詳細介紹如何在 spring boot 3.0.5 環境下配置 Druid 1.2.16 數據庫連接池,并解決配置過程中可能出現的 java: 無法訪問 javax.servlet.http.HttpServlet 錯誤,最終成功訪問 Druid 監控頁面。
Spring Boot 3.x 版本遷移至 Jakarta EE API,而 Druid 部分組件仍依賴于舊的 javax.servlet API,導致直接使用 ServletRegistrationBean 注冊 Druid 的 StatViewServlet 時出現兼容性問題。 簡單地啟用 spring.datasource.druid.stat-view-servlet.enabled: true 或添加 @ComponentScan(“com.alibaba.druid”) 并不能保證順利解決問題,甚至可能引發其他異常,例如 FilterRegistrationBean 兼容性錯誤。
核心問題在于 javax.servlet 和 Jakarta Servlet API 的版本沖突。 解決方法需要根據 Druid 和 Spring Boot 版本選擇合適的依賴或調整代碼。 這可能包括:
立即學習“Java免費學習筆記(深入)”;
- 使用 Jakarta EE 兼容的 Druid 版本或依賴: 查找并使用與 Jakarta EE 兼容的 Druid 版本,該版本已更新其依賴項以支持新的 API。
- 手動配置 Servlet 和 Filter: 避免使用 ServletRegistrationBean 和 FilterRegistrationBean,而是通過編寫自定義配置類,手動注冊 Druid 的 StatViewServlet 和 WebStatFilter,并使用 Jakarta Servlet API 的相關類。
- 修改 Druid 配置: 根據 Druid 的文檔,查看是否有配置選項可以調整其行為以適應 Spring Boot 3 的環境。
本文旨在指出問題根源,并提供解決思路。 具體的解決方案需要根據實際的依賴版本進行調整,建議參考 Druid 官方文檔以及 Spring Boot 的相關遷移指南。 請注意,僅依賴于 druid-spring-boot-starter 并不一定能自動解決所有兼容性問題。