環境構築
先日、久しぶりにSTS4でSpringBootの環境構築した際に、HelloWorldすら出せずにかなり苦戦したので、vscodeで環境を作ることにした。
環境
Ubuntu:16.04.6
VSCode:1.41.1(既に入ってる)
Java:Amazon Corretto 11(java8しかないから、今からインストール)
Gradle:5.6.2(既に入ってる)
Docker:18.09.7(既に入ってる)
Docker-Compose:1.8.0(既に入ってる)
MySQL:8.0(Dockerイメージを今からダウンロード)
Java11のインストールとパス設定
Amazon Corretto 11でdebファイルをダウンロードして、javaのパスを設定。
$sudo dpkg -i java-11-amazon-corretto-jdk_11.0.3.7-1_amd64.deb
$sudo update-alternatives --config java
alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。
選択肢 パス 優先度 状態
------------------------------------------------------------
0 /usr/lib/jvm/java-11-amazon-corretto/bin/java 11100003 自動モード
1 /usr/lib/jvm/java-11-amazon-corretto/bin/java 11100003 手動モード
* 2 /usr/lib/jvm/java-8-oracle/jre/bin/java 1081 手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 0
update-alternatives: /usr/bin/java (java) を提供するために自動モードで /usr/lib/jvm/java-11-amazon-corretto/bin/java を使います
$java -version
openjdk version "11.0.3" 2019-04-16 LTS
OpenJDK Runtime Environment Corretto-11.0.3.7.1 (build 11.0.3+7-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.3.7.1 (build 11.0.3+7-LTS, mixed mode)
Docker-ComposeでMySQLイメージをダウンロード
バージョン3で実行したら怒られたので、バージョン2で実行。
version: '2'
services:
db:
image: mysql:8.0
restart: always
ports:
- "3304:3306"
volumes:
- ./mysql_volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: test
MYSQL_PASSWORD: test
起動確認
$docker-compose up -d
$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
be628a63358d mysql:8.0 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 33060/tcp, 0.0.0.0:3304->3306/tcp
VScodeでプロジェクト作成
拡張機能の追加
以下の拡張機能をインストールする。
・Java Extension Pack
・Spring Boot Extension Pack
・Gradle Language Support
・Lombok Annotation Support for VS Code
プロジェクト作成
VScodeを起動して、View→Command Palette→Spring Initializr:Generate a Gradle Projectを選択→Javaを選択→パッケージ名入力→プロジェクト名入力→SpringBootのバージョンの選択→Spring Web,lombok,Spring Devtoolsを選択。
HelloWorldしてみる
DemoApplication.javaと同じ階層にcontrollerフォルダを作成して、その中に以下のLoginController.javaを作成。
package パッケージ名.プロジェクト名.controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class LoginController {
// ログイン画面のGET用コントローラー
@GetMapping("/login")
public String getLogin(Model model) {
// HelloWorldを返す
return "HelloWorld";
}
}
htmlを返したい場合はthymeleafなどのテンプレートエンジンを使用する必要があるが、今回はRESTサービスっぽく作ろうと考えているので、テンプレートエンジンは使わない方向で進める。
終わりに
次回はDB接続と一つサービスを完成することを目標に作業する。今日から記事更新とgithubへのコミットを頑張る!
SpringBootでグループウェアの開発②〜DB接続〜
GitHub:MyGroupware