𝗦𝗽𝗿𝗶𝗻𝗴 𝗕𝗼𝗼𝘁 𝗜𝘀 𝗡𝗼𝘁 𝗝𝘂𝘀𝘁 𝗮 𝗥𝗘𝗦𝗧 𝗔𝗣𝗜 𝗦𝗲𝗿𝘃𝗲𝗿

多くの開発者は、Spring BootはJSONデータを配信するためだけのものだと考えています。ReactやVueのアプリを動かすには、VercelやAWSのような別のサーバーを用意しなければならないと思い込んでいるのです。

しかし、それは間違いです。

Spring BootにはApache Tomcatサーバーが内蔵されています。つまり、単一のJARファイル内にフルスタックアプリケーションを構築できるのです。

単一のJARファイルを使用することには、主に3つのメリットがあります。

  • CORSの問題がゼロ:フロントエンドとバックエンドが同じポートとドメインを使用します。
  • コストの削減:別途Node.jsサーバーを用意する必要はありません。1つのLinuxサーバーまたはDockerコンテナですべてを動かせます。
  • シンプルなデプロイ:1つのビルドプロセスでUIとサーバーの両方を処理できます。

Spring BootにUIを含める4つの方法を紹介します。

  1. サーバーサイド・テンプレート(SSR) Thymeleafを使用してサーバー上でHTMLをレンダリングします。Mavenファイルにstarterの依存関係を追加し、Controllerを使用してHTMLテンプレートを返します。シンプルで高速です。

  2. Vaadin Vaadinを使えば、JavaだけでモダンなWebアプリを構築できます。JavaScriptやCSSを書く必要はありません。VaadinがバックグラウンドでReactコンポーネントを処理し、Tomcat経由で配信します。フロントエンドの複雑さを避けたいJava開発者にとって最適です。

  3. JSF (JavaServer Faces) JSFはエンタープライズシステムにおいて強力な選択肢です。PrimeFacesやBootsFacesと組み合わせることで、高品質なコンポーネントを利用できます。Springの設定にFacesServletを登録するだけで利用可能です。

  4. インディーハッカー流(SPA統合) ReactやViteのアプリを構築し、ビルドされたファイルを src/main/resources/static フォルダに移動させます。

これを自動化するには、frontend-maven-plugin を使用します。これにより、Mavenのビルド中に npm installnpm build が実行されます。

Reactユーザーへのヒント:React Routerを使用している場合は、未知のパスを index.html にリダイレクトするControllerを作成してください。これにより、ユーザーがページをリフレッシュした際に404エラーが発生するのを防ぐことができます。

余計なサーバーを探すのはやめましょう。内蔵Tomcatの力を活用してください。

出典: https://dev.to/ganigurgah/spring-boot-is-not-just-a-rest-api-server-50hh