簡體   English   中英

如何使用Jersey將依賴項注入資源?

[英]How to inject dependencies into resources with Jersey?

我有以下代碼:

@Path("stores")
class StoreResources {

  private ServerConfig config;

  @GET
  public String getAll() {
   //do some stuff with ServerConfig
  }
}

我需要從外部將ServerConfig對象注入此類,並在getAll()方法中使用它。

有哪些可能的方法來實現它? 我應該使用像Guice或Spring這樣的DI框架嗎?

這是一篇關於在Jersey下的Spring注入的好博客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();  
   }  
} 

出於我的目的,配置過於困難,所以我使用靜態彈簧解析器工廠來解析bean。 例如。

private SimpleBean simpleBean = SpringBeanFactory.getBean("mySimpleBean");

注入ServletConfig不需要Spring或Guice。 澤西島通過自己的注射機制。 請參閱Jersey樣本分發附帶的simple-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() +
                "'";
    }

}

使用Servlet部署JAX-RS應用程序時,可以使用@Context注入ServletConfig,ServletContext,HttpServletRequest和HttpServletResponse。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM