如何在HK2中为服务创建代理

时间:2013-11-29 21:46:34

标签: java proxy aop jersey-2.0 hk2

我正在使用内置于泽西岛的Jersey 2.x和HK2。 我需要在注释标记的服务中修饰某些方法,即我想在这些方法调用之前和之后执行一些额外的操作。不幸的是,HK2没有任何AOP功能。我认为我可以将我的工厂绑定到服务的接口,并在调用工厂的provide方法时创建服务的代理。但是,我需要向工厂提供一些工作:

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

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

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

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

1 个答案:

答案 0 :(得分:0)

在最新版本的hk2(2.2.0-b25)中,我们添加了向任何方法添加AOP联盟拦截器的功能。但是这个功能尚未完全出炉(我们将添加构造函数注入)并且尚未完全记录。但您可能想开始使用它,因为它可以让您将AOP MethodInterceptors添加到服务的任何方法中。