首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未处理的HK2注释

未处理的HK2注释
EN

Stack Overflow用户
提问于 2014-02-13 02:57:46
回答 2查看 1.8K关注 0票数 2

我正在通过泽西岛使用HK2,并希望让“立即服务”发挥作用。在这个过程中,我注意到(看上去)我的服务的注释没有一个被注册。例如,在旋转我的ServiceLocator并查看带有@Singleton注释的服务的描述符之后,它仍然被设置为@PerLookup。启动应用程序处理程序的代码如下:

代码语言:javascript
复制
ApplicationHandler handler = new ApplicationHandler(resourceConfig, new AbstractBinder() { ... });

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

代码语言:javascript
复制
bindAsContract(ShouldHaveSingletonScope.class);

在这之后立即查看我的ServiceLocator,我发现这个作用域不是从类中提取的(仍然@PerLookup)。我还需要另外指定一些东西来告诉HK2解析类注释吗?这似乎是一个相当标准的用例,所以我一定是遗漏了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-13 20:39:47

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

所以,访问ServiceLocator,只需做

代码语言:javascript
复制
ServiceLocatorUtilities.addClasses(locator, ShouldHaveSingletonScope.class);

绑定是非常字面的,并且只会做您告诉它的事情,而不是直接查看类。

票数 3
EN

Stack Overflow用户

发布于 2014-02-13 05:14:29

这应该是可行的:

代码语言:javascript
复制
bindAsContract(ShouldHaveSingletonScope.class).in(Singleton.class);

您可以使用Binder手动配置定位器。

-或者-

使用hk2注释,运行将生成META-INF/hk2-locator/default文件的hk2-inhabitants-generator (参见hk2文档),然后需要创建自己的ComponentProvider (参见泽西岛医生)来填充服务定位器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21744297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档