是否可以部分使用 Spring DI 部分使用 Jersey DI 构建对象?
Is it possible to construct an object partially with Spring DI and partially with Jersey DI?
我有一个 class JerseyWebService,它使用 Jersey DI 注入依赖项
@Path("/baskets")
public class JerseyWebService {
@Inject
ExternalApiServiceInterface api;
...
}
依赖在binder中指定
public class CustomBinder extends AbstractBinder {
@Override
protected void configure() {
bind(ExternalApiService.class).to(ExternalApiServiceInterface.class);
...
}
但这里的问题是 ExternalApiService
有其他依赖项,它使用 Spring 来注入它们。
class ExternalApiService implements ExternalApiServiceInterface{
@Autowired
AnotherService aservice;
是否可以仅在活页夹中指定 Jersey 将注入的一些依赖项以及由 Spring 注入的其他依赖项?
如果不是,那么如果 @Inject
而不是 ExternalApiService
中的 @Autowired
是否必须在活页夹中指定所有绑定 class?
如果 Jersey DI 找不到任何绑定,是否没有自动装配之类的功能或委托向 Spring 注入依赖项?
It should work。假定您具有所需的 Spring-Jersey 集成依赖项[1] 并且已正确配置应用程序[2]
1. See Spring DI support in Jersey
2。 See official Jersey Spring example
发生的是 HK2 (Jersey's DI framework) will look for an InjectionResolver
for the @Autowired
annotation, in order to resolve the dependency. The jersey-spring3
dependency has the AutowiredInjectionResolver
,它包含对 Spring 的 ApplicationContext
的引用。从那里开始,只需在应用程序上下文中查找它即可解决依赖关系。
我有一个 class JerseyWebService,它使用 Jersey DI 注入依赖项
@Path("/baskets")
public class JerseyWebService {
@Inject
ExternalApiServiceInterface api;
...
}
依赖在binder中指定
public class CustomBinder extends AbstractBinder {
@Override
protected void configure() {
bind(ExternalApiService.class).to(ExternalApiServiceInterface.class);
...
}
但这里的问题是 ExternalApiService
有其他依赖项,它使用 Spring 来注入它们。
class ExternalApiService implements ExternalApiServiceInterface{
@Autowired
AnotherService aservice;
是否可以仅在活页夹中指定 Jersey 将注入的一些依赖项以及由 Spring 注入的其他依赖项?
如果不是,那么如果 @Inject
而不是 ExternalApiService
中的 @Autowired
是否必须在活页夹中指定所有绑定 class?
如果 Jersey DI 找不到任何绑定,是否没有自动装配之类的功能或委托向 Spring 注入依赖项?
It should work。假定您具有所需的 Spring-Jersey 集成依赖项[1] 并且已正确配置应用程序[2]
1. See Spring DI support in Jersey
2。 See official Jersey Spring example
发生的是 HK2 (Jersey's DI framework) will look for an InjectionResolver
for the @Autowired
annotation, in order to resolve the dependency. The jersey-spring3
dependency has the AutowiredInjectionResolver
,它包含对 Spring 的 ApplicationContext
的引用。从那里开始,只需在应用程序上下文中查找它即可解决依赖关系。