Skip to main content

IoC

  • IoC - Inverson of Control - 控制反转
  • DI - Dependency Injection - 依赖注入
    • 构造函数
    • Setter
    • Interface
    • Annotation
    • XML
  • Dependency Lookup - 依赖查找

  • 提供上下文容器 - Container/ApplicationContext
    • 不管是否使用,应用都存在潜在的上下文
    • 不使用容器,则可能是直接污染全局 或者 维护局部上下文
  • 级联容器 - Parent/Child Container
    • 全局、请求、模块
  • 动态装配 - Dynamic Assembly
    • 实现模块的动态加载、可替换、插件
  • 生命周期管理 - Lifecycle
  • 避免循环依赖 - Circular Dependency

  • 大型一点的应用很难不使用 IoC

  • 好处
    • 依赖管理
    • 模块化
    • 解耦
    • 动态装配/插件
    • 方便测试

  • 后端
    • JVM Spring, Guice, Dagger
    • Node Nest.js
    • Golang fix, wire, dig
  • 前端
    • Angular
      • 内置 IoC
    • React
      • Context
    • Vue.js
      • vue3 - provide/inject
    • Inversify
    • Awilix