我正在通过泽西岛使用HK2,希望可以使用@Immediate服务。在此过程中,我注意到(看起来)我的服务的任何注释都未注册。例如,在旋转我的ServiceLocator并查看我的描述符中带有@Singleton注释的服务后,它仍设置为@PerLookup。我用于启动应用程序处理程序的代码如下:

ApplicationHandler handler = new ApplicationHandler(resourceConfig, new AbstractBinder() { ... });


我的活页夹注册这样的服务:

bindAsContract(ShouldHaveSingletonScope.class);


此后立即查看我的ServiceLocator,我发现该作用域没有从类中拉出(仍然是@PerLookup)。我还需要指定其他内容来告诉HK2解析类注释吗?这似乎是一个非常标准的用例,所以我必须缺少一些东西。

最佳答案

ServiceLocatorUtilities上有一个名为addClasses的方法。

因此,可以访问ServiceLocator并执行

ServiceLocatorUtilities.addClasses(locator, ShouldHaveSingletonScope.class);


活页夹非常直白,只会照你说的做,而不是直接看课。

10-07 21:23