Spring Restfull Jax-RS 注释支持

2022-09-03 13:53:01

我有以下类和网络.xml文件。spring 框架是否支持 jax-rs 注释,如 、 和 、 ...等。@PATH@PUT@Consumes

换句话说,我可以用代替@PATH@RequestMapping

爪哇岛:

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) {}
}

网.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>

答案 1

不可以,您不能在春季使用注释。你可以使用类似弹簧的东西。这很容易。如果你需要,我可以举个例子。(泽西岛和 CXF 也有很好的 JAX-RS 实现。javax.ws.*resteasy

AFAIK Springsource不知道为JAX-RS提供实现。因此,如果要使用 JAX-RS 中描述的功能部件,则不会直接从 spring 获得它。但是你可以使用spring开发一个休息的Web服务。这是一个不同的故事。在SO上发现了一个问题

更新

根据PaulNUK在下面的答案,我需要澄清我的答案。一天结束时的休息是一个规范,首先需要有人来实施它。

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

因此,您将永远无法使用 spring 实现的 JAX-RS 注释。


答案 2

只需将 JAX-RS(我使用的是 Jersey 2)注释放在一个类上,用 @Component 注释该类以使其成为 Spring Bean,即可获得具有 Spring 依赖注入的完全 JAX-RS 支持。

因此,Spring并没有通过实现JAX-RS本身来重新发明轮子,而是非常容易地与泽西岛集成。

下面是一个简单的 Spring Boot 示例:

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