SpringBoot3 使用Druid报错,配置不生效,404报错
在SpringBoot3中使用Druid数据源,导致启动报错,小伙伴们因踩坑,不得不回退到SpringBoot2版本,好不容易解决了,结果配置又不生效。。。开开心心打开浏览器,输入druid地址,404报错。。。本文将解决小伙伴们的疑点,本文就是那一道光! 在SpringBoot3中,开发者可能会遇到使用Druid数据源时出现的问题,比如启动报错以及配置不生效。本文将深入探讨这些问题的成因,并提供解决方案。 了解Druid。Druid是一个由阿里巴巴开发的高性能数据库连接池,它在监控、性能和扩展性方面表现优秀,超越了如DBCP、C3P0、BoneCP等其他连接池。Druid已在阿里巴巴内部广泛部署,用于超过600个应用。 问题的背景在于SpringBoot3与Druid的兼容性问题。SpringBoot3基于Jakarta Servlet API(jakarta.servlet),而Druid的底层依赖仍然是旧版的javax.servlet。这可能导致在SpringBoot3中引入Druid时启动报错。此外,SpringBoot2使用的是`com.alibaba.druid.support.http.StatViewServlet`,而SpringBoot3则改为`com.alibaba.druid.support.jakarta.StatViewServlet`,这也是配置不生效的原因之一。 为了解决启动报错,我们需要确保引入正确的依赖。对于SpringBoot3,应当使用`druid-spring-boot-3-starter`,而不是普通的`druid-spring-boot-starter`。同时,为了日志记录,还需要引入`spring-boot-starter-log4j2`依赖。这样,启动时就不会出现错误。 配置不生效通常是因为Druid配置类未正确地加载或设置。以下是一个示例的Druid配置类: ```java @Configuration public class DruidConfig { @ConfigurationProperties(prefix = "spring.datasource") @Bean public DataSource druidDataSource() { return new DruidDataSource(); } // 如果使用StatViewServlet,需要添加以下配置 @Bean public FilterRegistrationBean statViewServletFilterRegistrationBean() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new StatFilter()); registration.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); registration.addUrlPatterns("/*"); registration.setName("statFilter"); return registration; } @Bean public ServletRegistrationBean statViewServletRegistrationBean() { ServletRegistrationBean registration = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); registration.addInitParameter("allow", "127.0.0.1,localhost"); // 设置允许访问的IP registration.addInitParameter("loginUsername", "admin"); // 设置登录用户名 registration.addInitParameter("loginPassword", "admin"); // 设置登录密码 registration.addInitParameter("resetEnable", "false"); // 禁用HTML页面上的“reset”操作 return registration; } } ``` 当配置完成后,别忘了在`application.properties`或`application.yml`中指定Druid的相关属性,如数据库连接信息、初始化大小、最大连接数等。例如: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.initial-size=5 spring.datasource.druid.min-idle=5 spring.datasource.druid.max-active=20 ``` 如果在浏览器中访问`http://localhost:8080/druid`出现404错误,可能是因为StatViewServlet未正确配置或者未在Web应用的路径中注册。通过上述配置,应该能够正常访问Druid的监控页面。 总结,解决SpringBoot3中Druid的问题主要涉及以下几点: 1. 确保使用适用于SpringBoot3的Druid依赖。 2. 配置Druid数据源,并使用`@ConfigurationProperties`进行属性绑定。 3. 如果需要监控,正确配置StatViewServlet和StatFilter。 4. 在应用配置文件中指定Druid数据源的相关属性。 遵循这些步骤,你应该能够成功地在SpringBoot3中集成并使用Druid数据源,避免启动报错和配置不生效的问题。
- 粉丝: 7483
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助