Java と VS Code
- パソコンに Visual Studio Code を導入する(再チャレンジ)
- Go と VS Code
- Markdown と VS Code
- Java と VS Code ← イマココ
- やっと Codespaces が使える
仕事で Spring Boot なコードを書くことになって,今更ながら基本から勉強し直している。 で,どうせなら VS Code で環境を作るのがいいよねってことで,覚え書きとして記しておく。
Extension Pack for Java
$ code --install-extension vscjava.vscode-java-pack
これをインストールすると以下のパッケージも併せてインストールされる。
- Language Support for Java(TM) by Red Hat - Visual Studio Marketplace
- Debugger for Java - Visual Studio Marketplace
- Test Runner for Java - Visual Studio Marketplace
- Maven for Java - Visual Studio Marketplace
- Project Manager for Java - Visual Studio Marketplace
- Visual Studio IntelliCode - Visual Studio Marketplace
これだけあれば基本的な道具は一通り揃う。
みんな大好き “Hello, World!”
ここで簡単に動作確認しておこう。 以下の手順でプロジェクトの雛形を作成する。
- コマンドパレットから “Java: Create Java Project” を選択する
- プロジェクト・タイプの一覧が表示されるので “No build tools” を選択する
- 作業ディレクトリを選択する
- プロジェクト名を指定する(ここでは
hello
と入力)
これで
$ tree hello
hello
├── README.md
├── lib
└── src
└── App.java
2 directories, 2 files
という感じにディレクトリ・ファイルが作成される。
App.java
の中身はこんな感じ。
public class App {
public static void main(String[] args) throws Exception {
System.out.println("Hello, World!");
}
}
エディタ上は
という感じに表示されているので main()
関数直上の Run
のリンクをクリックすればコンパイル&実行してくれる。
Java Process Console に Hello, World!
と表示されれば無問題。
Import 補完
Java の import
宣言ってすぐに汚れるよね。
使わない import
とか。
逆に import
が足りなくてエラーになったり。
こういうときはコマンドパレットから “Organize Imports” でいい感じに整形してくれる。
保存時に自動で整形するには settings.json
に
"java.saveActions.organizeImports": true
を追加してやればよい。
Spring Boot Extension Pack
$ code --install-extension Pivotal.vscode-boot-dev-pack
これも以下のパッケージを含んでいるようだ。
- Spring Boot Tools - Visual Studio Marketplace
- Spring Initializr Java Support - Visual Studio Marketplace
- Spring Boot Dashboard - Visual Studio Marketplace
雛形プロジェクトを作る
これも動作確認しておこう。
- コマンドパレットから “Spring Initializr: Generate a Maven Project” を選択する
- Spring Boot のバージョンを選択(2021-08-18 時点の最新は 2.5.3)
- 使用言語を選択。もちろん Java で
- Group Id を入力。ここはデフォルトの
com.example
のままにしておく - Artifact Id を入力。ここもデフォルトの
demo
のままにしておく - パッケージタイプを選択。
Jar
とWar
がある。とりあえすJar
にしておこうか - Java のバージョンを選択。無難に LTS 版の 11 を選択しておくか(JDK のインストールは別途行うこと)
- 依存パッケージを選択。 Spring Web と Lombok は必須。あとは必要に応じて
- Spring Web (必須)
- Lombok (必須)
- Spring Boot DevTools
- Thymeleaf
あとは作業ディレクトリを指定すれば完了。 作業ディレクトリ直下に Artifact Id で指定した名前でディレクトリが掘られ,ディレクトリ・ファイルが展開される。
$ tree demo
demo
├── HELP.md
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── demo
│ │ └── DemoApplication.java
│ └── resources
│ ├── application.properties
│ ├── static
│ └── templates
└── test
└── java
└── com
└── example
└── demo
└── DemoApplicationTests.java
DemoApplication.java
の中身はこんな感じ。
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
このままだと何も表示できないので controller クラスと対応するテンプレートファイルを用意する。
まずは demo/src/main/java/com/example/demo/controller/DemoController.java
ファイルを作る。
中身はこんな感じ。
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class DemoController {
@GetMapping("/")
public String demo() {
return "demo";
}
}
次に demo/src/main/resources/templates/demo.html
ファイルを作る。
中身はこんな感じ。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Demo</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
全体の構成はこんな感じ。
$ tree demo
demo
├── HELP.md
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── demo
│ │ ├── DemoApplication.java
│ │ └── controller
│ │ └── DemoController.java
│ └── resources
│ ├── application.properties
│ ├── static
│ └── templates
│ └── demo.html
└── test
└── java
└── com
└── example
└── demo
└── DemoApplicationTests.java
テストとか端折ってるけどご容赦ね。
あとは Spring Boot Dashboard から Start すれば OK。
Web ブラウザから http://localhost:8080/
を叩いて Hello, World!
と表示されれば無問題。
Lombok Annotations Support for VS Code
$ code --install-extension GabrielBB.vscode-lombok
@Getter
とか @Setter
とか @Slf4j
とかの Lombok アノテーションを付けると VS Code がコードにエラーマークを付けることがある(ビルドはちゃんと通る)。
かなりウザいのでこの拡張機能を入れてみた。
快適!
Azure App Service
$ code --install-extension ms-azuretools.vscode-azureappservice
VS code 上から Azure Web Apps にお手軽にデプロイ出来ないかなぁ,と思って探したらありました。 やり方は以下のページの後半で紹介している。
めがっさ簡単だった。 GitHub Actions を使う方法とか,何なら Azure Spring Cloud を契約する手もあるのだが,今回はとにかく JAR か WAR を投げれればよかったので。
ブックマーク
- VSCodeで作るJava開発環境&Spring Bootアプリケーション入門 - Qiita
- Spring Boot アプリケーションのデプロイ - リファレンス
- SpringBootをVSCodeで使ってみる - Qiita
- 【Maven編】Spring Bootのビルドとデプロイ方法 | こへいブログ
- VSCodeとDockerでSpring Boot + PostgreSQL開発環境を作る(2) | Sales8開発者日記
- SpringBoot ログイン画面作成
- Spring Boot + Spring Data JPA ~サンプルアプリ実装~ - Qiita
- JPA (Java Persistence API)のアノテーション
- Thymeleafチートシート - Qiita
- SpringBootアプリにBootstrap4を追加(WebJars使用) – One IT Thing
- SpringブートSLF4Jロギングの例
- SpringブートSLF4Jロギングの例 - 開発者ドキュメント
- Spring bootでHttpSessionを使用する - m_shige1979のささやかな抵抗と欲望の日々
- Spring Boot で Ajax を実装する単純なサンプル - Qiita
- Lombok 使い方メモ - Qiita
- VScodeでJavaのインポート文をFixしたい | 猫好きが猫以外のことも書く
- Deploy Java to Azure
参考図書
- Spring Boot 2 入門: 基礎から実演まで
- 原田 けいと (著), 竹田 甘地 (著), Robert Segawa (著)
- 2020-05-22 (Release 2020-05-22)
- Kindle版
- B0893LQ5KY (ASIN)
- 評価
Spring Boot を勉強することになって急遽買った本。めっさ分かりやすかった。 PDF 版が欲しいくらい(笑) Spring Boot 3.2 対応にアップデートされていた。素敵!
- Effective Java 第3版
- Joshua Bloch (著), 柴田 芳樹 (翻訳)
- 丸善出版 2018-10-30
- 単行本(ソフトカバー)
- 4621303252 (ASIN), 9784621303252 (EAN), 4621303252 (ISBN)
- 評価
再勉強中。 Kindle 版のほうがちょっと安いが,勤務先でも使いたかったので紙の本にした。