java – 如何配置HK2以注入工厂方法创建的对象?
作者:互联网
在HK2中,配置注入的基本示例代码是这样的(在扩展AbstractBinder的类中:
bind(BuilderHelper
.link(FooImpl.class) // the class of the object to be injected
.to(FooInterface.class) // identifies what @Inject fields to link to
.build());
这导致HK2在需要创建FooInterface时调用构造函数FooImpl().
如果FooImpl没有构造函数怎么办?
>如果要使用静态工厂方法FooImpl.getInstance()实例化该怎么办?
>如果它打算由工厂对象fooFactory.create()实例化该怎么办?
我看到ResourceConfig有一个方法绑定(FactoryDescriptors factoryDescriptors),但我不清楚构建FactoryDescriptors对象的习惯是什么,并且无法在线找到任何示例.
解决方法:
虽然我仍然看不到使用BuilderHelper EDSL的方法(看起来这对于常见情况来说也是过度杀戮),但以下工作原理如下:
bindFactory(FooFactory.class)
.to(FooInterface.class);
这要求FooFactory是Factory< FooInterface>的实现,因此您需要围绕任何现有工厂的外观.我把它作为一个私人内部课,我需要它.
private static class FooFactory implements Factory<FooInterface> {
@Override
public void dispose(FooInterface foo) {
// meh
}
@Override
public FooInterface provide() {
return SomeFactory.getInstance();
}
}
标签:java,dependency-injection,hk2 来源: https://codeday.me/bug/20190612/1227132.html