从Jersey vs HK2获得注射剂

时间:2018-09-12 21:56:18

标签: dependency-injection jersey hk2

短篇小说:我想从使用Jersey的Injectee方法绑定的Supplier中获取AbstractBinder.bindFactory(Class)

基本上可以解决JERSEY-3675


长话:我使用org.glassfish.hk2.api.Factory方法创建了RequestScoped对象的实例,生活很美好。

我将我的注册信息转为Feature,然后由于JERSEY-3675而生活不佳。

长话短说,org.glassfish.hk2.utilities.binding.AbstractBinder在“功能”中不起作用。没问题,我想,我会使用org.glassfish.jersey.internal.inject.AbstractBinder

我遇到的轻微问题:Jersey的AbstractBinder.bindFactory()方法采用Supplier而不是Factory。没问题,我想,我会使用Supplier(无论如何我都更喜欢)。

我遇到的更大问题:我一直在使用org.glassfish.hk2.api.Injectee来获取InstantiationData,有关谁在打针。如果我不使用HK2的Factory,则不会注入。 Javadoc甚至说,如果未从Factory.provide()中调用该方法,则该方法“不确定”。

即使有泽西岛Injecteeorg.glassfish.jersey.internal.inject.Injectee),它似乎仅在使用泽西岛的InjectionResolver时可用。我不想使用InjectionResolver,因为

  1. HK2的InjectionResolver必须为Singleton,但我想在注入的对象中放入RequestScoped东西。

    • 在二读时,泽西岛的InjectionResolver并没有说要成为Singleton。有人可以确认吗?
  2. 我不想为此创建自己的注释(我已经创建了自己的注释,对于其他情况,我创建了InjectionResolvers

  3. 我对使用@Inject覆盖InjectionResolver充满信心。不知道这意味着什么,或者我如何能够注册其中的多个并将它们协同工作(每个功能一个)

同时,我正在使用错误中提到的解决方法。

我是DI领域的新手,所以如果某件事(或全部)没有意义,请告诉我。

0 个答案:

没有答案