java - 吉斯。注入(inject)静态方法

标签 java dependency-injection guice

我有一个实用方法:

public static void MyUtility(ClassWhoDoesImportantThink instance, 
                             Object params...){...}

通常我这样调用这个方法:

public class UsualClass{
  ...
  @Inject
  ClassWhoDoesImportantThink importantInstance;
  ...
  public aMethod(){
     ...

     UtilityClass.myItility(importantInstance, arg1, arg2);
     ...
  }
}

@Inject 是 Guice 特性。 但也许存在一种将“importantInstance”直接注入(inject)我的静态实用程序的方法?像:

public static void MyUtility( Object params...){
   ClassWhoDoesImportantThink instance = 
     GuiceFeature.getObjectUsuallyInjected(ClassWhoDoesImportantThink.class);
   ... //Do job
}

最佳答案

MyUtility 中:

  @Inject
  static ClassWhoDoesImportantThink importantInstance;

或者,或者:

  static ClassWhoDoesImportantThink importantInstance;
  @Inject static void setImportantInstance(ClassWhoDoesImportantThink importantInstance) {
    MyUtility.importantInstance = importantInstance;
  }

并在适当的 Guice 模块 configure() 方法中:

  requestStaticInjection(MyUtility.class);

Guice 然后会在其初始设置期间注入(inject)静态变量或 setter,MyUtility 静态方法可以简单地使用静态字段。

关于java - 吉斯。注入(inject)静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35419660/

相关文章:

java - 使用 Java 8 Stream(列表中的大量数据)时的性能问题

java - 圆圈边缘的箭头

java - 如何在调用任何其他类构造函数之前调用 Spring setter 方法?

c# - ASP.Net Core 注入(inject)设置

java - 应该如何修改这个类才能遵循 DIP(依赖注入(inject)原则)?

java - 与 Guice 一起 Swing

java - 为什么 CheckStyle 建议我使用 final 方法?

java - 初始化模拟对象 - Mockito

java - 在 com.google.inject.AbstractModule#configure(com.google.inject.Binder) 开头检查 null 状态的目的是什么

java - Guice 提供者拦截