我使用外部服务来提供属性,但希望将这些属性用作@Named(..)变量。尝试在configure方法中执行此操作会失败,并使用npe:
Names.bindProperties(binder(), myPropRetriever.getProperties());
失败,因为myPropRetriever没有出现,直到guice完成它的工作。我可以看出为什么这是有道理的 - 任何人都知道任何可能解决的时髦黑客?在这种情况下会很方便..
答案 0 :(得分:1)
感谢durron597指向相关问题的指针,这让我足以弄明白。答案是使用子喷射器对先前的喷射器输出采取措施。示例如下:
_.remove($scope.choices, function(n) {
return n.id == 'choice2';
});
注射器现在是应用程序其余部分的注射器。
然后在MyModule中,您可以对创建的对象采取措施:
Injector propInjector = Guice.createInjector(new PropertiesModule());
PropertiesService propService = propInjector.getInstance(PropertiesService.class);
Injector injector = propInjector.createChildInjector(new MyModule(Objects.firstNonNull(propService.getProperties(), new Properties())));
}
万一它可以帮助其他人..!