私はコーディングコンテストに参加しています。タスクは、ユーザーがhttp経由で売買リクエストを投稿できるRESTfulオンラインマーケットプレイスを作成することです。
これらのリクエストを受け入れて保存するフロントエンドWebサービスを構築する必要があります。
技術要件には、SpringブートとCXFの両方が含まれます。私の知る限り、CXFとSpringブートの両方が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リクエストを処理するためのこれら2つのアプローチの根本的な違いを理解するのを手伝ってもらえますか?同じアプリケーションでSpringBootとCXFの両方を使用する方法はありますか?
SpringMVCとApacheCXFは、HTTPリクエストを処理するための2つの別個のフレームワークであり、REST Webサービスの構築に使用できます。
REST Webサービスを構築しようとしている場合、それらはほぼ相互に排他的です(1つを選択する必要があります)。構築するだけの場合REST Webサービスの場合、それらはほぼ同等です。HTMLページを提供するためにMVCフレームワークも必要な場合は、Spring MVCにその機能があります(CXFにはありません)。
個人的な意見:Spring MVCは、CXF(より多くのXML構成が必要)よりも簡単に開始できます(ほとんどの構成を処理するSpring Bootのおかげです)。
PS:CXFの例では、@WebService
注釈。このアノテーションは、JAX-RS(REST)ではなく、JAX-WS(SOAP)の一部です。あなたはおそらくそれを必要としないでしょう。
TomEEを介してTomcatでCXFを活用するJAX-RS(REST)のNiceスターターについては、このプロジェクトを確認してください。
すべてがセットアップされ、準備が整いました。
ここでの長い説明:
CXF「スタンドアロン」を実行するには引き続きサーブレットコンテナ(TomcatまたはJetty)が必要であるため、上記はいくつかの手順を完了し、簡略化して、小さなスタータープロジェクトで完了します。道順を読むのが好きではなく、ハッキングを始めるのが好きな(私のような)せっかちな人々のために設計されています。うまくいくものから始めて、それを微調整するのはいつも簡単です。
以下を追加して、Spring Boot CXFJAX-RSスターターを使用します。
<dependency>
<groupId>org.Apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxrs</artifactId>
<version>3.1.7</version>
</dependency>