java - Guice的@Singleton注解可以继承吗?

标签 java guice code-injection

假设我有这个类(class):

@Singleton
public class Parent { ... }

和这个类:

public class Child extends Parent { ... }

在我的 Java 应用程序中,我的应用程序依赖于 Guice 注入(inject)来创建对象。如果我通过 Injector.createInstance(Child.class) 创建了 Child 的实例,那么该实例将自动成为 Singleton(因为父对象被注释为 Singleton),或者我是否需要将 @Singleton 注释显式添加到 Child

最佳答案

不,您还需要注释 Child。您可以设置一个简单的测试来验证这一点:

public class GuiceTest {

  @Singleton
  static class Parent {}

  static class Child extends Parent{}

  static class Module extends AbstractModule {
    @Override
    protected void configure() {
      bind(Parent.class);
      bind(Child.class);
    }
  }

  @Test
  public void testSingleton() {
    Injector i = Guice.createInjector(new Module());
    assertNotSame(i.getInstance(Child.class), i.getInstance(Child.class));
  }

}

关于java - Guice的@Singleton注解可以继承吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015831/

相关文章:

java - 设置可执行 Jar 文件的图标

java - 不使用迭代循环分配 Java 列表的子集

java - 从边界对齐可能不完美的 ByteArray 流中读取字符

java - 具有间接依赖性的 Guice 中的多个实现

java - Mockito ClassCastException

java - 使用Guice : No implementation bounded

dependency-injection - 你可以在持久实体中使用依赖注入(inject)吗?

javascript - 在 onPageFinished 事件之外将 Javascript 注入(inject)到 Web View 中(使用 DatePicker 在 Web View 的输入上设置日期)

c# - 如何在来自单独应用程序的 c# 方法调用中注入(inject)代码

javascript - 执行动态注入(inject)的 <SCRIPT> 在 Firefox (47.0) 上不起作用