编程语言
首页 > 编程语言> > java – 如何配置HK2以注入工厂方法创建的对象?

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有一个方法绑定(FactoryDe​​scriptors factoryDe​​scriptors),但我不清楚构建FactoryDe​​scriptors对象的习惯是什么,并且无法在线找到任何示例.

解决方法:

虽然我仍然看不到使用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