You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot报UnsatisfiedDependencyException异常解决方法

UnsatisfiedDependencyException 创建oidcController失败解决方案

问题本质

该异常触发原因是Spring容器初始化oidcController时,无法解析其构造器注入的WebClient类型依赖,之前尝试添加@Component/@Service注解无效是因为*@RestController本身已经包含@Component元注解*,问题不在控制器本身的组件注册上。

分步排查修复

  • 校验启动类扫描范围
    启动类SsecOidcApplication必须放在根包com.thehecklers.ssecoidc路径下,Spring Boot默认组件扫描范围为启动类所在包及其子包。如果手动修改过@SpringBootApplication的scanBasePackages属性,需要确保所有配置类、控制器都在扫描路径内。

    快速校验方法:启动时添加启动参数--debug,在控制台输出的已注册Bean列表中搜索webClient,确认自定义的WebClient实例是否被容器加载。

  • 检查OAuth2客户端依赖与配置有效性
    你定义的WebClient Bean依赖ClientRegistrationRepository、OAuth2AuthorizedClientRepository两个自动配置的Bean,这两个Bean创建失败会连带WebClient注册失败:
    1. 确认pom.xml中已引入spring-boot-starter-oauth2-client依赖,在Eclipse的Maven依赖树中确认没有依赖冲突、缺失的情况。
    2. 检查yml配置格式:YAML对缩进敏感,spring.security.oauth2.client下的配置层级必须对齐,你保留的google客户端占位符<insert_client_id_here>如果缩进错误、或者未做合法值替换,会导致配置解析失败,直接阻断OAuth2自动配置。如果暂时不需要google登录,直接删除google客户端的配置段即可,不要留无效配置。
      正确配置参考:
      spring:
        security:
          oauth2:
            client:
              registration:
                okta:
                  client-id: 你的okta客户端ID
                  client-secret: 你的okta客户端密钥
              provider:
                okta:
                  issuer-uri: https://dev-82991527.okta.com/oauth2/default
      
  • 解决WebClient注入歧义
    如果容器中存在多个WebClient实例(比如Spring Boot自动配置的实例、其他配置类声明的实例),按类型注入会触发匹配失败。在自定义的WebClient Bean上添加@Primary注解,标记为优先注入的实例即可,修正后的Bean定义代码:
    @Bean
    @Primary
    public WebClient webClient(ClientRegistrationRepository clientRegistrationRepository,
                                OAuth2AuthorizedClientRepository authorizedClientRepository) {
        ServletOAuth2AuthorizedClientExchangeFilterFunction oauth2Filter =
                new ServletOAuth2AuthorizedClientExchangeFilterFunction(clientRegistrationRepository, authorizedClientRepository);
        oauth2Filter.setDefaultOAuth2AuthorizedClient(true);
        return WebClient.builder()
                .baseUrl("http://localhost:8081/resources")
                .apply(oauth2Filter.oauth2Configuration())
                .build();
    }
    
  • 修复Eclipse Maven项目同步问题
    Eclipse导入Maven项目常出现依赖未同步、缓存异常的问题,完成上述修改后,右键项目 -> Maven -> Update Project,勾选Force Update of Snapshots/Releases强制更新依赖,再执行Project -> Clean清理编译缓存后重启应用。

内容的提问来源于stack exchange,提问作者EX08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:03:50