3. 技术专题 - 依赖注入

  • 过程
    • 定义依赖关系(定义当前调用者需要注入哪些对象)
      • 通过构造函数注入
        • 比如angular和ASP.NET Core,可以在使用者的构造函数的参数列表中定义依赖哪些类
          • 不论是angular/nodejs/ASP.NET,现在流行的现代的注入方式,都是通过构造函数中定义的参数列表来一层层自动注入
      • 通过成员变量注入
        • 比如Spring,可以在调用者的类定义中,通过@Autowire定义哪些成员对象是需要被注入的
    • 在某些地方定义一些接口在实际使用时,应该注入什么对象实例
      • Spring中,在Config类中,通过命名等匹配方式,定义应该注入什么对象及其构造过程
      • ASP.NET Core中,在Startup.cs的ConfigureServices()中,通过services.Add Singleton(),services.AddTransient()等定义注入(注入Swagger等第三方库,底层其实也是调的这两个函数)。
      • Angular中,所有的Service类都默认作为可注入的对象,只要在调用者的构造函数中指明注入即可
    • 入口
      • 调用接口时注入
        • 会自动注入接口所需要的前面已经预定义好的类
      • 程序启动时注入。
        • Spring
          • 可以通过@Component+@Scheduled指定开机启动的定时任务
            • 其中可以调用通过@Service+@Async定义的异步任务
        • ASP.NET Core
          • 实现IHostedService接口,并在Startup.cs的ConfigureServices()中,通过services.AddHostedService()定义注入。
          • 在Startup.cs的Configure()参数列表中列出。当然,如果该类中定义了Start函数(比如message queue的consumer),那么还是要在注入实例后调用一下的。

posted on 2021-01-28 16:01  碎羽love星谊  阅读(37)  评论(0编辑  收藏  举报

导航