はじめに
Java を使ったサーバーサイド PJ は過去にいくつか経験ありますが、
直近は全く触れていないのでまずは、Hello World から始めていきます。
サーバーサイドでは 「Kotlin の存在感が強くなってきている」情報も得ているので、
そこは現場で使う使わないに関わらず別途キャッチアップをして記事にします。
Spring Boot て何?
過去に Spring フレームワークで Web サービスを作ったことはありますが、Spring Boot 自体は初めてです。
SpringBoot と Gradle のススメ ~HelloWorld 編 によると
さて、Spring と SpringBoot 何が違うのかと誰もが思うはず ざっくり言うならば SpringBoot = Spring + tomcat である。
また、ビルドツールについてだが、 Maven:設定を xml で記述 Gradle:設定をソースとして記述 上記のような違いがある。
なるほどですね。すごくしっくりきました。
深堀りは別途するとしてまずは先に進みます!
InteliJ インストール
Jet brains 社が開発している IDE ですね。
これは過去に触った経験はありますが、最近は触っていないので
思い出しながら、ショートカット集なども Blog に書ければなと思います。
今回、まとめていく手順はIntelliJ IDEA UItimate を使っていきます。
年間なかなかの料金をお布施する必要がありますが、
最初の 30 日間は無料で使用できるのでまずは DL して
インストールして試すことができます!
Spring Initializr を使ってプロジェクト作成
Spring Boot プロジェクトを作成してくれるように用意してくれているものです。
Web サービスが存在はしていますが、
今回は IntelliJ を使い作成します。
少し余談なんですが、「Initializr」てスペルミスってない?て思ったんですが何故
このようなスペルになったのか気になります。
Create New Project を選択
Spring Initializr を選んで
- Type: Gradle Project
- Java Version: 8 → 13
に変更
Dependencies > Web > Spring Web を追加
右上の ▶ ボタンをタップして起動
自分はこの時点で、Java の Target Platform が不一致でエラーが出ましたのでその解決は末尾に記載します。
ブラウザアクセス
で以下の画面が表示されれば成功
Hello World を表示するように Java クラスを追加
DemoApplication と同階層に HelloWorldController を追加します。
ファイルが作成されたら以下のように書き換えます。
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloWorldController {
@RequestMapping("/")
@ResponseBody
public String helloWorld() {
return "Hello World";
}
}
InteliJ の Run をリスタートしてから、再びブラウザアクセスして Hello World と表示すれば成功です!
ビルド時に Java バージョンが不一致で失敗した場合
自分はビルド時に以下のようなエラーが表示されました。
Could not target platform: 'Java SE 13' using tool chain: 'JDK 11 (11)'.
Preferences > Build, Execution, Deployment > Build Tools > Gradle
で下記の画面を開いてから
Gradle JVM の部分を正しいバージョンに変更してください。
感想
昔と比べて環境が作りやすい印象を受けました。
ただの、Hello World しか出力していないのですが、
リクエストのパスとソースをまとめて書けるのは好印象です。
ソースコードを書くときに行ったり来たりすると、効率が悪いですし。
spring.pleiades.ioというサイトを見つけたのでこちらも進めて感触をつかめればと考えています。