我是编码竞赛的一部分,其任务是创建一个RESTful在线市场,用户可以通过http发布买卖请求。
我需要构建一个接受并存储这些请求的前端Web服务。
技术要求包括Spring boot和CXF。据我所知,CXF和Spring启动都能够接受http请求。
在春季启动时,您使用如下控制器:
@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?
答案 0 :(得分:30)
Spring MVC和Apache CXF是两个独立的框架来处理HTTP请求,可以用来构建REST Web服务。
如果您希望构建REST Web服务,它们几乎是互斥的(您必须选择一个)。如果您要做的就是构建REST Web服务,那么它们就非常相同。如果你还需要一个MVC框架来提供HTML页面,那么Spring MVC就具备了这种能力(CXF没有)。
个人意见:Spring MVC比CXF(需要更多XML配置)更容易上手(感谢Spring Boot处理大部分配置)。
PS:在您的CXF示例中,您有一个@WebService
注释。此批注是JAX-WS(SOAP)的一部分,而不是JAX-RS(REST)。你可能不需要它。
答案 1 :(得分:1)
检查这个项目是否适合通过TomEE在Tomcat上利用CXF的JAX-RS(REST)。
一切都已准备好并准备就绪。
详细说明:
注意,运行CXF“Standalone”仍然需要一个Servlet容器(Tomcat或Jetty),因此上面几个步骤已完成,简化并在一个小型启动项目中完成。专为不耐烦的人(如我自己)而设计,他们不喜欢阅读路线,也喜欢开始黑客攻击。我总是更容易从有用的东西开始然后调整它。
答案 2 :(得分:1)
使用Spring Boot CXF JAX-RS启动器添加:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxrs</artifactId>
<version>3.1.7</version>
</dependency>