gpt4 book ai didi

java - 如何为 HK2 中的服务创建代理

转载 作者:太空宇宙 更新时间:2023-11-04 15:22:18 24 4
gpt4 key购买 nike

我正在使用 Jersey 2.x 和 Jersey 中内置的 HK2。我需要装饰我的服务中用注释标记的某些方法,即我想在此类方法调用之前和之后执行一些附加操作。不幸的是,HK2 没有任何 AOP 功能。我认为我可以将工厂绑定(bind)到服务的接口(interface),并在调用工厂的 provide 方法时创建服务的代理。但是,我的工厂需要一些东西才能工作:

1)创建代理的服务的类和接口(interface)

2) ServiceLocator 实例正确注入(inject)所有服务的依赖项

我只是看不出有什么办法可以两者兼得。如果我使用 bindFactory(MyFactory.class) 绑定(bind)工厂,那么我无法将有关服务的信息传递给它,但可以将 ServiceLocator 实例注入(inject)其中。如果我使用 bindFactory(new MyFactory(Service.class, ServiceImpl.class)) 绑定(bind)工厂,那么我有有关服务的信息,但我没有 ServiceLocator 实例正确创建该服务,因为 HK2 不会将任何内容注入(inject)到工厂实例中,而且我无论如何也看不到从 AbstractBinder 获取 ServiceLocator 实例来在绑定(bind)期间为我的工厂提供定位器。

我真的很感激任何建议和推荐。我希望我不是第一个想要统一代理我的服务的人。

最佳答案

在最新版本的 hk2 (2.2.0-b25) 中,我们添加了向任何方法添加 AOP 联盟拦截器的功能。但这个功能还没有完全成熟(我们将添加构造函数注入(inject))并且还没有完整记录。但您可能想开始尝试一下它,因为它使您能够将 AOP MethodInterceptors 添加到服务上的任何方法。

关于java - 如何为 HK2 中的服务创建代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20293781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com