java - 如何使用guice注入(inject)将Class注入(inject)到具有静态方法的类中?

标签 java dependency-injection static guice inject

我是 Guice 注入(inject)液的新手。如何将类注入(inject)到我将在静态方法中使用的静态变量中?

这是我想在 doLocalize() 方法中使用注入(inject)变量 b 的类。

public class A {
   @Inject //Trying to inject this class
   private static B b;

   // Private constructor to prevent initialization.
   private A() {}

   public static String doLocalize(String word) {
       return b.localize(word);
   }
}

这是我想要执行 guice 注入(inject)的模块类。

注意:我无法更改 MyModule 和 B 类,因为它来自另一个依赖项。

public class MyModule extends AbstractModule {
   public void configure() {
       bind(B.class);
       // some other binds
   }

}

我想要注入(inject)到我的A类中的类

public class B {
    public String localize(String word) {
        //does some stuff
        //returns a modified string
    }
}

最佳答案

使用requestStaticInjectionwiki 中对此进行了描述。 。

Note: I cannot change MyModule and B class since its coming from another dependency.

那么您将需要一个新模块。

class A {
    @Inject
    public static B b;
    static void a(){b.b();}
}
class B {
    @Inject public PrintStream out;
    void b() { out.println("Value: b"); }
}

class MyModule extends AbstractModule {
    public void configure() {
        bind(B.class);
        bind(PrintStream.class).toInstance(System.out);
    }
}

class AModule extends AbstractModule {
    public void configure() {
        requestStaticInjection(A.class);
    }
}

@Test
public void test() {
    Guice.createInjector(new AModule(), new MyModule()); // Can be in any order
    A.a();
    assertThat(A.b, is(not(nullValue())));
}

关于java - 如何使用guice注入(inject)将Class注入(inject)到具有静态方法的类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33698211/

相关文章:

java - 如何将 spring bean 注入(inject) jsp 2.0 SimpleTag?

node.js - NestJS:依赖注入(inject)和提供者注册

spring - 在 Spring 中实例化泛型类 bean 的问题

java - 静态字段每次使用时都会被调用/加载吗?

java - 在 Java 中模拟静态方法调用的静态抽象和动态链接

java - 为什么程序不允许初始化静态最终变量?

java - 如何替换引号外的单词

java - Android Studio "class"或 "interface"预期

java - OnSensorChanged 被调用的次数超过预期

.net - 无法将参数传递给 Windsor Typed Factory Facility