我需要使用Guice构造一个ApplicationContext实例。我的其他大多数类都取决于ApplicationContext。但是,ApplicationContext依赖于公共静态void main中可用的args数组。
当前,我必须创建ApplicationContext并手动调用setter,然后在要求Guice创建其他对象之前将其注入injectMembers。当它取决于args时,是否有更好的方法让Guice创建我的对象?
ApplicationContext appContext = new ApplicationContext();
// configure my appContext from command line args
injector.injectMembers(appContext);
MyAppFoo a = injector.getInstance(MyAppFoo.class);
a.doThings();
最佳答案
您可以使用提供程序或提供程序方法构造ApplicationContext
并对其进行配置,然后再参与其他注入:
public static void main(String[] args) {
Injector injector = Guice.createInjector(b -> {
b.bind(ApplicationContext.class).toProvider(() -> {
// construct and configure application context
ApplicationContext ctx = new ApplicationContext();
ctx.setSomething(args[0]);
ctx.setSomethingElse(args[1]);
return ctx;
}).in(Singleton.class);
});
}
关于java - 根据args注入(inject)类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25148893/