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

Java控制器中自动装配静态内部类失败,如何解决?

解决Spring中静态内部类自动装配失败的问题

问题根源

你的静态内部类A.B没有被Spring容器识别并管理,容器中不存在该类的实例,因此控制器C尝试注入时会抛出Unsatisfied Dependency错误。

解决方案

方法一:给静态内部类添加组件注解

直接给A.B添加@Component(或@Service、@Repository等符合业务场景的注解),让Spring组件扫描时将其注册为Bean:

class A{
  public void methodA(){}
  
  @Component
  public static class B{
     public void methodB(){}
   }
}

@Controller
class C {
  private final A.B ab;

  // Spring 4.3+ 版本中,构造方法注入可省略@Autowired
  C(A.B ab){
    this.ab=ab;
  }
}

注意:需确保Spring的组件扫描范围包含类A所在的包,否则无法扫描到B类。

方法二:在配置类中手动注册Bean

若不想给B添加组件注解,可在配置类中通过@Bean方法手动注册A.B的实例:

@Configuration
public class AppConfig {
    @Bean
    public A.B bInstance() {
        return new A.B();
    }
}

静态内部类无需依赖外部类A的实例即可创建,因此直接new A.B()即可完成实例化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:31:50