吉斯。注入静态方法
Guice. Inject to static method
我有一个实用方法:
public static void MyUtility(ClassWhoDoesImportantThink instance,
Object params...){...}
通常我这样调用这个方法:
public class UsualClass{
...
@Inject
ClassWhoDoesImportantThink importantInstance;
...
public aMethod(){
...
UtilityClass.myItility(importantInstance, arg1, arg2);
...
}
}
@Inject 是 Guice 功能。
但也许存在一种将 "importantInstance" 直接注入我的静态实用程序的方法?像:
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 将在其初始设置期间注入静态变量或 setter,并且 MyUtility
静态方法可以简单地使用静态字段。
我有一个实用方法:
public static void MyUtility(ClassWhoDoesImportantThink instance,
Object params...){...}
通常我这样调用这个方法:
public class UsualClass{
...
@Inject
ClassWhoDoesImportantThink importantInstance;
...
public aMethod(){
...
UtilityClass.myItility(importantInstance, arg1, arg2);
...
}
}
@Inject 是 Guice 功能。 但也许存在一种将 "importantInstance" 直接注入我的静态实用程序的方法?像:
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 将在其初始设置期间注入静态变量或 setter,并且 MyUtility
静态方法可以简单地使用静态字段。