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注释。