2

我有一个 JerseyWebService 类,它使用 Jersey DI 注入依赖项

@Path("/baskets")
public class JerseyWebService {
    @Inject
    ExternalApiServiceInterface api;
    ...
}

依赖项在活页夹中指定

public class CustomBinder extends AbstractBinder {
    @Override
    protected void configure() {   
       bind(ExternalApiService.class).to(ExternalApiServiceInterface.class);
       ...
    }

但这里的问题是它ExternalApiService有其他依赖项,它使用 Spring 来注入它们。

class ExternalApiService implements ExternalApiServiceInterface{
    @Autowired
    AnotherService aservice;

是否可以在 binder 中仅指定 Jersey 将注入的一些依赖项以及 Spring 注入的其他依赖项?

如果不是,那么如果@Inject不是@Autowiredin ExternalApiService,是否必须在 binder 类中指定所有绑定?

如果找不到任何绑定,Jersey DI 是否没有类似自动装配的功能或委托向 Spring 注入依赖项?

4

1 回答 1

1

它应该工作。假设您具有所需的 Spring-Jersey 集成依赖项[ 1 ]并已正确配置应用程序[ 2 ]

1.请参阅 Jersey 中的 Spring DI 支持
2.请参阅 Jersey Spring 官方示例

发生的情况是HK2InjectionResolver (Jersey 的 DI 框架)将寻找@Autowired注解,以解决依赖关系。该jersey-spring3依赖项具有AutowiredInjectionResolver,它包含对 Spring 的ApplicationContext. 从那里只需在应用程序上下文中查找它即可解决依赖关系。

于 2015-06-23T03:27:47.953 回答