Spring Boot 3.0.1项目启动报错:WebMvcConfigurerAdapter类不存在
问题解决方案
原因分析
- Spring Boot 3.0.1依赖的Spring Framework 6.x已完全移除
WebMvcConfigurerAdapter类(该类在Spring 5.0就已被废弃,官方推荐直接实现WebMvcConfigurer接口)。 WebSecurityConfigurerAdapter在Spring Security 5.7+版本中已被废弃,Spring Boot 3.0集成的Spring Security版本远高于此,同时你手动引入的spring-security-config 4.1.3.RELEASE与Spring Boot 3.0的依赖版本严重冲突,这是触发报错的核心原因。
修复步骤
移除冲突的Spring Security依赖
在pom.xml中删除手动引入的旧版本依赖,Spring Boot的starter会自动管理兼容的Spring Security版本:<!-- 删除该行冲突依赖 --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>4.1.3.RELEASE</version> </dependency>保留Spring Security的starter依赖即可:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>重构SecurityConfig配置类
不再继承WebSecurityConfigurerAdapter,改用Spring Security推荐的组件式配置:import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.web.SecurityFilterChain; @Configuration public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth -> auth // 按需配置权限规则,示例:允许公开访问接口 .requestMatchers("/api/public/**").permitAll() .anyRequest().authenticated() ) // 按需添加其他配置,如表单登录、JWT认证等 .formLogin(form -> form.permitAll()) .logout(logout -> logout.permitAll()); return http.build(); } }处理WebMvc相关配置(若存在)
如果之前有继承WebMvcConfigurerAdapter的配置类,改为直接实现WebMvcConfigurer接口:import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebMvcConfig implements WebMvcConfigurer { // 按需重写方法,如addResourceHandlers、addCorsMappings等 }清理缓存并重新构建
执行mvn clean install清理旧依赖缓存,重新构建项目后启动即可。
内容的提问来源于stack exchange,提问作者Snehashis Dasgupta
相关产品推荐
相关产品推荐

