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

Java中无需注解实现依赖注入(DI)的可行方案及现有框架

回答

当然有办法在Java中实现依赖注入(DI),不用给那些原本不该添加注解的类硬加注解!不过先聊聊你提到的Spring Boot常规做法——确实,不少人一开始接触的时候,会以为必须给构造方法加@Inject或者@Autowired,还得给实现类加@Service这类注解才能注册到DI容器里,就像你举的例子:

@Inject // 或者在Spring Boot里用@Autowired
public MyInjectedClass(IThing1 thing1, IThing2 thing2) { 
    // 构造逻辑
}

但其实Spring Boot本身就提供了摆脱这些注解的方案,还有其他DI框架也支持无注解的配置方式:

  • Spring Boot自动构造注入(Spring 4.3+):如果你的类只有一个构造方法,Spring会自动识别这个构造方法并完成依赖注入,根本不需要额外加@Autowired或@Inject!这就省去了给构造方法加注解的麻烦,业务类能保持更干净的状态。
  • Java配置类完全接管Bean注册:你可以通过@Configuration注解的配置类,手动注册所有需要的Bean,完全不用给业务类加@Service、@Component这类注解。举个例子:
@Configuration
public class AppConfig {
    @Bean
    public MyInjectedClass myInjectedClass(IThing1 thing1, IThing2 thing2) {
        return new MyInjectedClass(thing1, thing2);
    }

    @Bean
    public IThing1 thing1() {
        return new Thing1Impl();
    }

    @Bean
    public IThing2 thing2() {
        return new Thing2Impl();
    }
}

在这个配置里,MyInjectedClass、Thing1Impl、Thing2Impl都是纯POJO类,不需要任何注解就能被Spring管理并完成依赖注入。

  • 其他无注解DI框架:比如Google Guice,它通过模块(Module)来定义依赖绑定关系,业务类完全不需要加任何注解。你只需要编写模块类配置依赖,Guice就会自动处理注入逻辑,让你的业务代码保持纯粹。

内容的提问来源于stack exchange,提问作者Josh M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:55:43