Java 21
Spring Boot v3.1.0
前回、JavaのWebアプリケーションフレームワークについてのコンテンツを書きました。その中でSpring Framework、Spring Bootをおすすめしたので、Spring BootのWeb開発の始め方について説明していきます。
なお、このコンテンツではmacOSを使い、なおかつEclipseもSTS(Spring Tool Suite)も使わないチュートリアルとなっています。
とてもシンプルなハンズオンになっていますので、実際に手を動かしながらやってみましょう。
このコンテンツではEclipse、STSを使わないことは冒頭で書きましたが、なぜ使わないかについて説明します。
主な理由は、Macで開発するエンジニアはCLI(黒い画面)に慣れており、IDEよりエディタを好む傾向にあるからです。通常、Java開発であればEclipseを使うことが多いですが、Java開発におけるVSCodeの使い方も含めて紹介していきます。
もし、このチュートリアルをEclipse + STSで実施したい場合は、以下のリンクからダウンロードしてください。
なお、同じページに掲載されているVSCodeのSpring Tool 4は使っていくので、いずれにせよ参照してみてください。
それでは早速始めていきます。JavaおよびJDKはすでにインストールされている前提で始めているため、まだの場合はこちらからインストールしておきましょう。
まずはSpringをCLIで扱うためにspring-cli
をインストールします。Homebrewを使うため、そちらも未インストールの場合はこちらを参考にしてください。
以下のコマンドでインストールを確認できます。(インストール先のパスが表示されていればOKです)
また、maven
も必要になるため、同じくHomebrewでインストールします。
ここまでできたら、次はSpring Bootプロジェクトを作成します。
以下のコマンドを実行しましょう。
このコマンドでdemo
という名前のSpring Bootアプリケーションが作成されます。
早速動かしてみましょう。
初回のみ、必要なパッケージがダウンロードされるので少し時間がかかりますが、最終的に以下のようなSpringのロゴが表示されれば成功です。
http://localhost:8080/greeting
にブラウザでアクセスするか、以下のようにcurl
でアクセスすると、レスポンスを確認できます。
なお、このgreeting
サービスは、パラメータname
をつけることでHello, {name}!
という変更できます。
ここで、プロジェクト作成について追加の説明をします。以下のコマンドを実行すると、Springのプロジェクトのテンプレート一覧を表示できます。
これを利用することで、あらかじめ必要なパッケージがプリセットされたプロジェクトを作成できます。今回は余計な知識を省きたいため使いませんが、リストに掲載されているGitHubのURLを見て、使いたいものがあれば使っていきましょう。
コマンドで使うと下記のようになります。なお、デフォルトでweb
が選択されているため、何も指定しなくとも先に確認したRESTのレスポンスを得られます。
後から追加したい場合は、以下のコマンドで追加可能です。
さらに、ここで生成されたプロジェクトのファイル群について説明しておきます。
まずはディレクトリ構成を見てみましょう。今回触るのはsrc/
以下だけなので、src/
以下を表示します。
これは最小限のアプリケーション構成となっており、おおむね以下のようなディレクトリ構成にして開発を進めることが多くなっています。
もちろん、これも小さな例となりますので、実際のプロジェクトだとより複雑になるケースもあります。
最初につかむイメージとしては、上記の形で覚えてください。
では実際に、先述したディレクトリ構成でアプリケーション開発してみましょう。
今回はシンプルにするため、データベースとのやり取りは行いません。
先ほどのディレクトリ構成にするため、restservice
ディレクトリは削除してしまいましょう。最低限、blog
ディレクトリとresources
ディレクトリは作成しておいてください。
通常、IDEでパッケージを作れば自動的に作られ場合もありますが、今回は自分で書いてみましょう。
@SpringBootApplication
を見てみましょう。@xxx
はアノテーションと呼ばれ、アプリケーションをコンパイル(コンピュータが理解できるように変換する過程)で特定の処理を実行します。
@SpringBootApplication
は、名前の通りSpring Bootのアプリケーションを作成してくれます。
最初に作成した際はRESTアプリケーションとなっていましたが、今回はわかりやすくHTMLを使えるようにしましょう。
まずはpom.xml
の編集です。以下を追加してください。
これはThymeleafというJavaのテンプレートエンジン(HTMLをレンダリングする機能)を提供するために追加しています。
次にHTTPの受け皿を作ってみましょう。src/main/com/example/blog/controller/BlogController.java
を作成し、編集します。
こうすることで、http://localhost:8080/
のトップページでblog_index.html
をレンダリングするようになります。このblog_index.html
はsrc/main/resources/templates/
に入れましょう。
ここまで書いたら、先ほどと同じく実行してみます。
この状態でhttp://localhost:8080/
にアクセスしてみると、blog_index.html
の内容が表示されます。
このように、Spring Bootの基本的なURLアクセス手続き(ルーティング)は@GetMapping
のようなアノテーションで行うことがわかりました。
これだけでは、雰囲気が掴みづらいのでblog_index.html
にデータを表示してみます。
まずはservice
ディレクトリにBlogService.java
を作成し、編集していきましょう。
このコードは、シンプルに"Blog Title 1~3"という文字列のリストを返す関数だけ定義しています。
これをControllerで使っていきます。
//=> 追加
と書かれたコードを追加しました。これによって、BlogService
のgetBlogTitles()
によって返された文字列のリストがblogTitles
として使えるようになります。
blog_index.html
を編集しましょう。
h1
タグの下にタイトルを表示する記述をしました。
ここまでできたら実行してみます。
以下の画像のように表示されれば成功です。
ブログタイトル一覧表示
ここまで、Spring Bootでシンプルなチュートリアルをしてみましたが、実際にはrepositoryでデータベースアクセスするなど、勉強を続けると複雑さは増していきます。しかしながら、明確な書き方ができる上に、多くの機能が自動的に作られているため、慣れれば親しみやすいと感じられるでしょう。
また、勉強の進め方のコツとしてはアノテーションへ慣れることです。
アノテーションで実装内容を理解できるがゆえに、アノテーションを覚えていないと混乱してしまうのがSpringです。最初は戸惑うことも多いでしょうが、求人件数が多い人気フレームワークなのでぜひ学んでみてください。