Java 针对RESTful Web服务的Spring Boot与Apache CXF?

Java 针对RESTful Web服务的Spring Boot与Apache CXF?,java,spring,web-services,rest,cxf,Java,Spring,Web Services,Rest,Cxf,我是编码竞赛的一部分,任务是创建一个RESTful在线市场,用户可以通过http发布买卖请求 我需要构建一个前端web服务来接受和存储这些请求 技术要求包括弹簧靴和CXF。据我所知,CXF和Spring boot都能够接受http请求 在spring boot中,您使用如下控制器: @Controller @EnableAutoConfiguration public class controller { @RequestMapping("/") @ResponseBody

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

我需要构建一个前端web服务来接受和存储这些请求

技术要求包括弹簧靴和CXF。据我所知,CXF和Spring boot都能够接受http请求

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

@Controller
@EnableAutoConfiguration
public class controller {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello, World!";
    }
}
而对于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);

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

springmvc和apachecxf是处理HTTP请求的两个独立框架,可用于构建restweb服务

  • SpringMVC是Spring“保护伞”下的一个项目(因此与构建它的Spring框架紧密相连)
  • ApacheCXF是JAX-RS(REST)和JAX-WS(SOAP)的开源实现。ApacheCXF可以独立运行,也可以包含在Spring应用程序中
如果您希望构建一个RESTWeb服务,那么它们几乎是互斥的(您必须选择一个)。如果您要做的只是构建RESTWeb服务,那么它们几乎是等价的。如果您还需要一个MVC框架来为HTML页面提供服务,那么SpringMVC就有这个功能(CXF没有)

个人观点:Spring MVC比CXF(需要更多的XML配置)更容易入门(感谢Spring Boot为您处理大部分配置)


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

请查看此项目,了解通过TomEE在Tomcat上利用CXF的优秀JAX-RS初学者(REST)

一切都准备好了,可以开始了

详细描述如下:


注意,运行CXF“Standalone”仍然需要一个Servlet容器(Tomcat或Jetty),因此上述步骤在一个小的启动项目中完成、简化并完成。专为不耐烦的人(如我自己)设计,他们不喜欢阅读说明,只喜欢开始黑客攻击。对我来说,从工作的东西开始,然后调整它总是比较容易的。

使用Spring Boot CXF JAX-RS启动器,添加:

<dependency>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-spring-boot-starter-jaxrs</artifactId>
  <version>3.1.7</version>
</dependency>

org.apache.cxf

spring示例实际上不是spring boot…它看起来更像spring mvc。您可能正在使用SpringBoot来启动并运行您的应用程序……但是您使用的代码是SpringMVC的东西;使用REST-WS-then-REST-web服务真的让我很困惑,我认为这些肯定是不同的东西(也许是??)。也许可以编辑一下,让它更清晰。