Spring Restfull Jax-RS注释支持

Ahm*_*aya 15 java rest spring jax-rs

我有以下class和web.xml文件.春天在什么框架支持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) {}
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

Mal*_*ana 11

不,你不能javax.ws.*在春天使用注释.你可以使用像resteasy春天这样的东西.这很容易.如果您需要我可以提供一个例子.(Jersey和CXF也有很好的JAX-RS实现.)

AFAIK Springsource不知道为JAX-RS提供实现.因此,如果您想使用JAX-RS中描述的功能,您将无法直接从spring获得它.但是您可以使用spring开发休息Web服务.那是一个不同的故事.在SO上发现了一个问题.

更新

根据PaulNUK的答案,我需要澄清我的答案.休息日结束是一个规范,有人需要首先实现它.

问题清楚地问道,我们是否可以替换注释,你不能这样做,除非你在类路径中添加像Jersey这样的外部依赖.该案例实施由泽西岛提供.

因此,您永远无法使用Spring实现的JAX-RS注释.


Pau*_*NUK 6

只需将JAX-RS(我使用Jersey 2)注释放在类上,使用@Component注释该类以使其成为Spring bean,并且您可以使用Spring依赖注入完全支持JAX-RS.

所以Spring并没有通过实现JAX-RS本身来重新发明轮子,但是很容易与Jersey集成.

这是一个简单的Spring启动示例:

http://spring.io/blog/2014/11/23/bootiful-java-ee-support-in-spring-boot-1-2