spring Boot 3 集成 Druid 監控:Javax.servlet.http.HttpServlet 訪問問題及解決方案
在 spring boot 3 中集成 Druid 監控頁面時,開發者經常遇到無法訪問 javax.servlet.http.HttpServlet 的問題,導致 Druid 監控頁面無法打開。本文分析問題根源并提供解決方案。
問題:使用 ServletRegistrationBean 注冊 StatViewServlet 時,出現 java: 無法訪問 javax.servlet.http.HttpServlet 錯誤。這是因為 Spring Boot 3 已遷移至 Jakarta EE API,而 Druid 的 StatViewServlet 和 WebStatFilter 仍基于舊的 javax.servlet API。直接使用 ServletRegistrationBean 會造成兼容性沖突。
雖然 druid-spring-boot-starter 可自動配置,只需設置 spring.datasource.druid.stat-view-servlet.enabled: true 即可啟用監控頁面。但此配置有時無效,且添加 @ComponentScan(“com.alibaba.druid”) 可能引發其他異常,例如找不到 org.springframework.boot.web.servlet.FilterRegistrationBean.setFilter(javax.servlet.Filter) 方法。
立即學習“Java免費學習筆記(深入)”;
核心問題是 javax.servlet 和 jakarta.servlet 的 API 不兼容。解決方法:
-
檢查 Druid 和 Spring Boot 版本兼容性: 確保使用的 Druid 版本與 Spring Boot 3 兼容。參考 Druid 官方文檔,選擇合適的版本。
-
避免手動注冊 Servlet 和 Filter: 充分利用 druid-spring-boot-starter 的自動配置功能。手動注冊容易導致沖突。
-
調整配置參數: 根據 Spring Boot 3 的特性調整 druid-spring-boot-starter 的配置參數,確保 Druid 監控頁面正確啟動。
-
避免使用舊版 javax.servlet 依賴: 直接使用舊版依賴可能引發其他問題。
通過以上步驟,您可以有效解決 Spring Boot 3 集成 Druid 監控頁面時遇到的 javax.servlet.http.HttpServlet 訪問問題,順利啟用監控功能。 務必參考 Druid 官方文檔,并根據 Spring Boot 3 的特性進行配置調整。