我刚刚对依赖注入的Google Guice进行了修改,并开始将其集成到我现有的应用程序中。到目前为止,一切都很好。除了它们的依赖项之外,我有许多类需要字符串、数据源等。我知道有 NamedBindings,但我真的不想为每个必须传递给每个类的构造函数的简单字符串创建注释。然后,有一个叫做 AssistedInject 的东西,为我创建了 Factory 实现。哇,但我还是要定义工厂的接口。对于确实有依赖关系的类来说没关系,但是这个示例类呢:
public class FooBarClass {
public FooBarClass(String name, String anotherOne) {
// Some stuff
}
}
在某些情况下,我怀疑如何以正确的方式使用 Guice,或者更一般地说,DI。“我经常听到:XYZ 框架是新的。” 但这暗示我必须使用 DI 框架创建每个实例。
只需要一个实例
如果我只需要这个类的一个实例怎么办?这个类除了两个字符串之外绝对没有依赖关系。考虑一个 Shutdown Hook,它只会被实例化一次并作为我的 Shutdown Hook 传递给 JVM。我应该用 Guice 创建这个实例吗?这对我来说看起来很愚蠢,因为没有什么可以注入的,但是我必须编写一个工厂接口来传递 Guide 两个参数,并且必须为我的 FooBarClass 创建一个接口来使用 DI。
需要多个实例
同样的事情也适用于我需要这个类的多个实例的情况。没有依赖关系,但我必须创建一堆样板代码才能从中得到任何东西。这对我来说似乎是错误的。
那么,我应该如何使用 DI 和/或 Guice?
非常感谢!