Spring Security整合JWT保护API时遇Unsatisfied dependency异常
解决Spring Security OAuth2资源服务器配置启动异常问题
异常根源
报错中的NoClassDefFoundError: org/springframework/security/oauth2/server/resource/web/BearerTokenResolver表明缺少对应的OAuth2资源服务器依赖类,或存在Spring Security版本不兼容、依赖冲突的情况。
解决方案
1. 引入正确的OAuth2资源服务器依赖
如果是Spring Boot项目,必须引入官方starter依赖,不要单独引入零散的Spring Security OAuth2组件:
Maven项目(pom.xml)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-resource-server</artifactId> </dependency>
Gradle项目(build.gradle)
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
2. 校验版本兼容性
- Spring Boot 3.x必须搭配Spring Security 6.x版本(Spring Boot的starter会自动管理版本,不要手动指定冲突版本)
- 用
mvn dependency:tree(Maven)或gradle dependencies(Gradle)排查依赖冲突,排除重复或低版本的Spring Security/OAuth2相关依赖。
3. 优化配置(可选)
你的配置写法符合Spring Security 6.x规范,可去掉不必要的httpBasic(withDefaults())(OAuth2资源服务器场景通常无需HTTP Basic认证,避免潜在冲突):
@Bean public SecurityFilterChain security(HttpSecurity http) throws Exception { return http .csrf(AbstractHttpConfigurer::disable) .authorizeHttpRequests(auth -> auth.anyRequest().authenticated()) .oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults())) .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .build(); }
验证步骤
- 清理项目依赖缓存(Maven:
mvn clean install -U;Gradle:gradle clean build --refresh-dependencies) - 重新启动应用,检查异常是否消失
内容的提问来源于stack exchange,提问作者lulzeR
相关产品推荐
相关产品推荐

