Guice的依赖注入:任何教程都没有涉及的东西

Mal*_*lax 8 java dependency-injection guice

我刚刚使用Google Guice for Dependency Injection,并开始将其集成到我现有的应用程序中.到现在为止还挺好.我有许多类,除了它们的依赖项,还需要Strings,DataSources等等.我知道有NamedBindings,但我真的不想为每个简单的字符串创建一个注释,我必须传递给每个类的构造函数.然后,有一个名为AssistedInject的东西,为我创建Factory实现.哇,但我还是要定义工厂的界面.这对于具有依赖关系的类是否可以,但是这个示例类呢:

public class FooBarClass {
    public FooBarClass(String name, String anotherOne) {
        // Some stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

在某些情况下,我怀疑如何使用Guice,或者更一般地说,DI是正确的方式."我经常听到:XYZ框架是新的." 但这暗示我必须使用DI框架创建每个实例.

只需要一个实例

如果我只需要这个类的一个实例怎么办?除了两个字符串之外,这个类绝对没有依赖性.想想一个Shutdown Hook,它只会被实例化一次并作为我的Shutdown Hook传递给JVM.我应该用Guice创建这个实例吗?这看起来非常愚蠢,因为没有什么可注入,但我必须编写工厂接口来传递Guide两个参数,并且必须为我的FooBarClass创建一个接口来使用DI.

需要多个实例

同样的事情适用于我需要这个类的多个实例的情况.没有依赖关系,但我必须创建一堆样板代码才能从中获取任何东西.这对我来说似乎不对.

那么,我应该如何使用DI和/或Guice?

非常感谢!

Jes*_*son 23

数据中拆分依赖关系可能会有所帮助.

  • 依赖关系通常是服务:数据库,时钟和RPC存根.加上所有层次上的这些应用程序代码的:UserAuthenticator,PaymentHandler,和EmailGateway.
  • 数据只是:a Date,a Map<String,InetAddress>或甚至a Customer.这些是简单的内存域对象.

DI自然最适合事物的依赖性.您应该继续使用new您的数据模型类.