代码之家  ›  专栏  ›  技术社区  ›  liminal

构造器注入时匕首偷懒

  •  0
  • liminal  · 技术社区  · 6 年前

    我意识到 Lazy 用匕首注射 懒惰的 到现场注入点。例如,

    class Foo {
        @Inject lateinit var bar: Lazy<Bar>
    
        fun useBar() = bar.get().doSomething()
    }
    

    使用构造函数注入呢?我没见过有人这么做。

    class Foo @Inject constructor(private val fizz: Fizz,
                                  private val bar: Lazy<Bar>) {    
        fun useBar() = bar.get().doSomething()
    }
    

    总结一下,在做匕首懒散注射时,我可以用 Lazy<Bar> 在构造器里?或者是我唯一的选择 懒惰<酒吧> 在通过构造函数注入的同一个类中保留其他非延迟依赖项的同时进行字段注入?

    谢谢你的指点!

    1 回复  |  直到 6 年前
        1
  •  3
  •   dawid gdanski    6 年前

    构造器注入与常规的现场注入没有区别, Lazy -包装的构造函数参数是可接受的。

    唯一需要确保的是通过依赖关系图中的某个模块公开依赖关系。