springboot3 配置druid ?


当我使用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的监控页面


回答:

既然你使用了 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


又细看了一下,主要问题是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

以上是 springboot3 配置druid ? 的全部内容, 来源链接: utcz.com/p/945081.html

回到顶部