[英]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.