Chapter 23. Spring DI 使用 Spring 注入

Jersey 提供对 Spring DI 的扩展。使得 Jersey 在使用 Spring bean 时 就像是 JAX-RS 的组件 (比如 资源和提供者) 并且允许 Spring 注入 Jersey 管理的组件中。

这个 Spring 扩展模块配置是基于注解的。当 Spring bean 注入,就会产生的 受 Spring 管理的 JAX-RS 类。 注入的 Spring bean 不只是 通过 Spring XML 来配置,也支持用 Spring 的 单例和 请求域。

为了 JAX-RS 资源能和 Spring 的功能正常工作还需要代理,比如 Spring 的事务管理(用 @Transactional), Spring Security 和 面向切面编程(如 @Aspect),资源必须通过Spring 的注解 @Component, @Service, @Controller@Repository 来管理:

  1. import javax.ws.rs.GET;
  2. import javax.ws.rs.Path;
  3. import org.springframework.stereotype.Component;
  4. @Component
  5. @Path("/")
  6. public class SomeResource {
  7. @Transactional
  8. @GET
  9. public void updateResource() {
  10. // ...
  11. }
  12. }

局限性:
Spring bean 不能通过 Spring XML 配置被直接注射到 JAX-RS 类