Spring Boot与Apache CXF的RESTful Web服务?

use*_*879 12 java rest spring web-services cxf

我是编码竞赛的一部分,任务是创建一个RESTful在线市场,用户可以通过http发布买卖请求.

我需要构建一个接受并存储这些请求的前端Web服务.

技术要求包括Spring boot和CXF.据我所知,CXF和Spring启动都能够接受http请求.

在spring boot中,您使用如下控制器:

@Controller
@EnableAutoConfiguration
public class controller {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello, World!";
    }
}
Run Code Online (Sandbox Code Playgroud)

而对于CXF(使用javax.ws.rs),代码可能如下所示:

@WebService(serviceName = "MarketService", targetNamespace = "http://localhost:9005")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public interface MarketService {

    @GET
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    @Produces({ MediaType.APPLICATION_JSON })
    @Path("/sells/{id}")
    public prod getProduct(@PathParam("id") int id);
Run Code Online (Sandbox Code Playgroud)

有人可以帮我理解这两种处理http请求的方法之间的根本区别吗?有没有办法在同一个应用程序中同时使用Spring Boot和CXF?

Chr*_*e L 31

Spring MVC和Apache CXF是两个独立的框架来处理HTTP请求,可用于构建REST Web服务.

  • Spring MVCSpring下的一个项目"伞"(因此与它构建的Spring框架紧密相关),
  • Apache CXF是JAX-RS(REST)和JAX-WS(SOAP)的开源实现.Apache CXF可以独立运行,也可以包含在Spring应用程序中.

如果您正在寻求构建REST Web服务,它们几乎是互斥的(您必须选择一个).如果您要做的就是构建REST Web服务,那么它们就完全相同了.如果你还需要一个MVC框架来提供HTML页面,那么Spring MVC就具备了这种能力(CXF没有).

个人观点:与CXF(需要更多XML配置)相比,Spring MVC更易于入门(感谢Spring Boot处理大部分配置).

PS:在您的CXF示例中,您有一个@WebService注释.此批注是JAX-WS(SOAP)的一部分,而不是JAX-RS(REST).你可能不需要它.