Spring Restfull Jax-RS注释支持
问题内容:
我有以下class和web.xml文件。spring框架是否支持jax-rs注释,如@PATH
和@PUT
,@Consumes
…等。
换句话说我可以@PATH
代替@RequestMapping
Java:
import org.springframework.stereotype.Controller;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
@Controller
@Path("/register")
public class RegisterServices {
@PUT
@Path("/create")
@Consumes(MediaType.APPLICATION_JSON)
@Produces({"application/json"})
public Response create(@Context HttpServletRequest requestContex,
@HeaderParam("Authorization") String authorization,
String xMsisdn, String param) {}
}
web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
问题答案:
不,您不能javax.ws.*
在春季使用批注。您可以resteasy
在spring上使用类似的东西。这很容易。如果需要,我可以提供一个示例。(Jersey和CXF也具有良好的JAX-
RS实现。)
AFAIK Springsource不知道要提供JAX-RS的实现。因此,如果您想使用JAX-
RS中描述的功能,则不会直接从spring获得。但是您可以使用spring开发rest
Web服务。那是个不同的故事。在SO上发现了一个问题。
更新资料
根据下面PaulNUK的答案,我需要澄清我的答案。一天结束时休息是一个规范,首先需要有人实现它。
问题清楚地问,除非您将 classJersey这样 的外部依赖项添加 到类路径中 ,否则我们是否 可以替换注释,您不能这样做
。该案例实现由Jersey提供。
因此,您将永远无法使用spring实现的JAX-RS注释。