VS CodeでSpringBoot立ち上げ
運動不足軽減のためにインストールしたPikmin Bloomの最終起動日が90日以上経ってしまったakiyoshiです。最初にアバターを決め、鉢植え?をもらったところまでは覚えているのですが・・・ピクミン4が来たら本気出す。
さて、本題
最近、新人の基礎学習としてSpringBootを使って簡単なWEBアプリを作ってもらうことになり、環境を作ったので備忘として残します。アプリを作ってもらうだけなら、Eclipseで完結させた方が楽なのですが、未経験の人にも色々なものに触ってもらいたいという思い(と半分趣味)で、作りました。
私、個人としてはWidows上にEclipseを直置きの経験しかないため、これがSpringBootのWEBアプリとしてベストプラクティスかどうかは分かりません。
環境
- Windows 10 ※バージョン2004以上(ビルド19041以上)
- WSL2
- Ubuntu20.04 LTS
- VS Code(拡張機能各種)
- Java17
- Docker-DeskTop
構築手順
WSL2をインストール
- wsl --installで必要なディストリビュートも入るから楽ちん
- のはずが、なぜか事故る
- ググると更新パッケージが必要でした
手順 4 - Linux カーネル更新プログラム パッケージをダウンロードする
- 上記インストールでうまくいけたので、Ubuntuのユーザーを作成する
- wsl --installで必要なディストリビュートも入るから楽ちん
VS CodeからWSLへ接続する
- 拡張機能をインストール
- 画面左下の
><
をおすと画面中央で「ディストリビューションを使用して新しいWSLウィンドウ...」で接続先を選ぶ(たぶん既定のままでOK)
/etc/wsl.confを作成(デフォルトユーザーをrootに)し、WSLを再起動(powerShellで
wsl --shutdown
)する
わざわざrootする理由はDockerのビルド時に権限周りがめんどくさいため。[user] default = root
※注意点
root状態ではキャプチャ配下のディレクトリ以外は触らないようにしてください。
Windows側のファイルを触ると権限都合で一部ファイルが実行できなくなる恐れがあります。
Java準備
Springプロジェクト作成
Docker-Desktopでコンテナ立ち上げ
※Docker-Desktopの利用は以下の点にご注意を
- Docker-Desktopインストール(Download Docker Desktop for Windows)
WSL2が起動していれば、基本的に素のまま進んでいけばOK - 設定(setting)をする
- General>Use the WSL 2 based engineにチェック
- Resources>WSL Integration>Enable integration with my default WSL distroにチェック
- ディストリビューションのトグルボタンをON
- WSL2ターミナル上(
docker -v
)でバージョンが表示されればOK - mysqlコンテナ必要ファイル作成
- springアプリを作ったディレクトリにdocker-compose.yml作成
- mysqlディレクトリにビルド時に実行したいファイルや設定ファイルを作成
※databaseやテーブルのcreate文など(なくても動きます)
- コンテナ立ち上げ
コマンドdocker-compose up -d --build
を打つか、Docker-desktop画面でポチポチすればOK
version: "3.9" services: db: image: mysql:5.7 command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci environment: MYSQL_DATABASE: databaseName MYSQL_ROOT_PASSWORD: pass TZ: "Asia/Tokyo" ports: - "3306:3306" volumes: - ./mysql/data:/var/lib/mysql - ./mysql/init:/docker-entrypoint-initdb.d - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- Docker-Desktopインストール(Download Docker Desktop for Windows)
Springプロジェクトとmysql接続
設定ファイルを編集
demo/src/main/resources/application.propertiesspring.jpa.database=MYSQL spring.datasource.url=jdbc:mysql://localhost:3306/databaseName spring.datasource.username=root spring.datasource.password=pass spring.session.jdbc.initialize-schema: always
動作確認
「コンテナ立ち上げて設定ファイルも書いたし、DB使えるよね。」ということで確認しましたが、実はライブラリ不足でJdbcTemplateが使えませんでした。。
慌ててbuild.gradleに以下を追加。dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' }
やってみて
Java開発ではEclipseしか触ったことがありませんでしたが、VS Codeでも開発できそうなので、機会があればこっちでやってみようかと考え中です。
なんてことを言っていると、同僚からはIntelliJ IDEAを勧められ、また悩むという。
とはいえ、新人学習にIntelliJという選択肢はないと思うので、今回のことは無駄にならない!・・・ですよね?
参考
- WSL を使用して Windows に Linux をインストールする
- MSのWSLインストール手順
- Spring Initializr
- Springプロジェクト作成に利用した拡張機能のWEB版(というか、こちらが本家?)
- Spring Boot での開発 - リファレンスドキュメント
- Spring Boot 依存バージョン - リファレンスドキュメント
- セットアップで利用する依存関係はこちらでチェック