代码之家  ›  专栏  ›  技术社区  ›  Dunith Dhanushka

如何使用Jersey将依赖项注入到资源中?

  •  7
  • Dunith Dhanushka  · 技术社区  · 14 年前

    我有以下代码:

    @Path("stores")
    class StoreResources {
    
      private ServerConfig config;
    
      @GET
      public String getAll() {
       //do some stuff with ServerConfig
      }
    }
    

    ServerConfig 对象从外部注入该类并在 getAll() 方法。

    2 回复  |  直到 11 年前
        1
  •  5
  •   Eldorado    14 年前

    这是一个很好的关于新泽西州春季注射的博客 http://javaswamy.blogspot.com/2010/01/making-jersey-work-with-spring.html

    package com.km.services;  
    
    import javax.ws.rs.GET;  
    import javax.ws.rs.Path;  
    import javax.ws.rs.Produces;  
    import org.springframework.context.annotation.Scope;  
    import org.springframework.stereotype.Component;  
    import com.sun.jersey.spi.inject.Inject;  
    import com.km.spring.SimpleBean;  
    
    @Path("/hello")  
    @Component  
    @Scope("request")  
    public class HelloResource {  
    
       @Inject private SimpleBean simpleBean;  
    
       @GET  
       @Produces("text/plain")  
       public String getMessage() {  
        return simpleBean.sayHello();  
       }  
    } 
    

    出于我的目的,配置非常困难,所以我使用静态spring解析器工厂来解析bean。如。

    private SimpleBean simpleBean = SpringBeanFactory.getBean("mySimpleBean");
    
        2
  •  2
  •   Arul Dhesiaseelan    13 年前

    您不需要Spring或Guice来注入ServletConfig。泽西岛通过它自己的注射机制。请参阅Jersey samples发行版附带的简单servlet示例。下面是将HttpServletRequest和ServletConfig注入资源的示例代码:

    @Path("/resource1")
    public class ResourceBean1 {
    
        @Context
        HttpServletRequest servletRequest;
    
        @Context
        ServletConfig servletConfig;
    
        @GET
        @Produces("text/plain")
        public String describe() {
            return "Hello World from resource 1 in servlet: '" +
                    servletConfig.getServletName() +
                    "', path: '" +
                    servletRequest.getServletPath() +
                    "'";
        }
    
    }