springboot3 配置druid ?

image.pngimage.pngimage.pngimage.pngimage.pngimage.png
当我使用springboot 3.0.5集成druid1.2.16时,在写配置druid的配置文件ServletRegistrationBean<Servlet> bean = new ServletRegistrationBean(new StatViewServlet(),url);显示的报错信息为java: 无法访问javax.servlet.http.HttpServlet
如何解决无法访问无法访问javax.servlet.http.HttpServlet
如何打开druid的监控页面

阅读 4.2k
2 个回答

既然你使用了 druid-spring-boot-starter 理论上就不应该还要那么多代码,基本都能通过配置搞定。

参考下官方文档吧。

https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter


自动装配的Bean是这个,但是配置spring.datasource.druid.stat-view-servlet.enabled: true后,也没有自动装配。

添加@ComponentScan("com.alibaba.druid")会加载该类,但会报异常。

2023-03-31T17:46:03.042+08:00 ERROR 18495 --- [  restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    com.alibaba.druid.spring.boot.autoconfigure.stat.DruidWebStatFilterConfiguration.webStatFilterRegistrationBean(DruidWebStatFilterConfiguration.java:36)

The following method did not exist:

    'void org.springframework.boot.web.servlet.FilterRegistrationBean.setFilter(javax.servlet.Filter)'

The calling method's class, com.alibaba.druid.spring.boot.autoconfigure.stat.DruidWebStatFilterConfiguration, was loaded from the following location:

找不到这个方法void org.springframework.boot.web.servlet.FilterRegistrationBean.setFilter(javax.servlet.Filter),应该是SP3适配的问题,没再细看。https://github.com/alibaba/druid/issues/5187

image.png


又细看了一下,主要问题是SpringBoot3由Java EE 迁移到 Jakarta EE API。
Druid里面的StatViewServletWebStatFilter都是基于javax.servlet开发,而SP3则是jakarta.servlet


本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

你没有在pom.xml中添加javax.servlet-api的依赖,导致找不到HttpServlet的类文件。你需要在pom.xml中添加依赖:

**<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>**

或者你没有在application.properties中开启druid的stat-view-servlet2,导致无法访问监控页面。你需要在application.properties中添加配置:

#druid servlet
spring.datasource.druid.stat-view-servlet.enabled=true
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏