search
LoginSignup
13
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Java Advent Calendar 2020 Day 24

posted at

updated at

VSCodeで作るJava開発環境&Spring Bootアプリケーション入門

皆さんこんにちは。
Java Advent Calendar 2020(Qiita)24日目の記事を書かせていただきます。

はじめに

Javaでの開発が長いのですが、案件で使うエディタと言えば、eclipse(またはSTS)かIntelliJ IDEAが多かった私。InteliJに慣れてしまうと、ライセンス払ってでもInteliJ一択!だったんですが、ふと触ってみたVisual Studio Codeがいい感じ!だったんです。本記事では、Visual Studio CodeでJavaの開発環境を構築していきたいと思います。

また、今回はJavaの開発で使われることが多い「Spring MVC, Spring Boot」(フレームワーク)で作る簡易アプリケーションも合わせて作ってみたいと思います。

想定開発環境

OS: Windows10
Visual Studio Code: 1.51.1(2020年12月)
※ VSCode, JDKのインストールは既に済んでいる前提
JDKのインストールについては、以前記事を書いているので、そちらをご参照ください!
Amazon Corretto11 インストール

手順(3ステップ)

  1. Java Extension Packインストール
  2. Javaを動かしてみよう!
  3. Spring Bootアプリケーションを作ってみよう!

手順1: Java Extension Packインストール

その他、よく使いそうな他の拡張機能もインストールしておきましょう。

手順2: Javaを動かしてみよう!

  • Visual Studio Codeで「コマンドパレット」(Ctrl + Shift + p)を表示、[Java: Create Java Project] コマンドを実行してJavaプロジェクトを作成する。
>Java: Create Java Project
No build tools

※ 作成するJavaプロジェクトの名前を入力→プロジェクトの作成完了

  • 作成されるJavaプロジェクトのファイルとディレクトリ構成
helloworld
├── lib
└── src
    └── App.java

デフォルトで作成される「App.java」をコンパイルし、生成されたクラスファイルを実行 → 
"Hello, World!"が表示される。

$ javac App.java
$ java App
Hello, World!

手順3: Spring Bootアプリケーションを作ってみよう!

手順2で「Spring Boot Extension Pack」を入れたので、Spring Bootアプリケーションを作ってみます。

プロジェクトの作成

  • Visual Studio Codeで「コマンドパレット」(Ctrl + Shift + p)を表示、Spring bootのプロジェクトを作成します。

コマンドパレットでの操作

1.「Spring Initializr: Generate a Maven Project」を選択
2. 「Specify Spring Boot version」 Spring Bootのバージョンを選択します。今回は特に指定がないので、2020/12時点の最新(2.4.0)を選択
3. 「Specify project language」使用する言語を選択。今回はJavaを選択
4. 「Input Group Id」パッケージ名を入力。
例:com.example
5. 「Input Artifact Id」プロジェクト名を入力。
例:demo
6. 「Specify packaging type」パッケージタイプ:今回はwarにします。(jarでもOK)
7. 「Specify Java type」使用するJavaのバージョンが求められるので、使用するJavaのバージョンを選択。今回はJava14を使用。
8. 「Search for dependencies」Mavenプロジェクトなので、依存関係を選択があります。今回は、「Webアプリを作る」「画面を表示させる」という目的があるので、以下2つを選択します。
Spring Web / Thymeleaf

ここまでやると、プロジェクトの保存先を聞かれます。プロジェクトの保存場所を選択してください。

  • 作成されるディレクトリは以下のような構成です。
    • DemoApplication.java, ServletInitializer.javaがデフォルトで実装されています。
|― src
 |   |― main
 |   |    |― java
 |   |    |    |― com
 |   |    |        |― example
 |   |    |             |― demo(プロジェクト名)
 |   |    |                      |― DemoApplication.java(デフォルトで作成される)
 |   |    |                      |― ServletInitializer.java(デフォルトで作成される)
 |   |    |― resources
 |   |           |― static/ (静的ファイル)
 |   |           |― templates/ (テンプレートファイル)
 |   |           |― application.properties (環境独自の設定ファイル)
 |   |― test
 |       |― java
 |            |― com
 |                |― example
 |                      |― demo(プロジェクト名)
 |                               |― DemoApplicationTests.java
 |― .gitignore
 |― HELP.md
 |― mvnw
 |― mvnw.cmd
 |― pom.xml (Mavenの設定ファイル)

アプリケーションの作成

  • \demo\src\main\java\com\example\demo\controller ディレクトリ配下にControllerクラスを作成します。(SampleController.java)
 package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class SampleController {
    @RequestMapping("/sample")
    public String sample() {
        return "sample";
    }
}

\demo\src\main\templates内にsample.htmlを作成します。(sample.html)

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>Sample</title>
</head>

<body>
    <h1>Hello World!</h1>
</body>

</html>
  • Spring bootアプリケーションの実行 VSCode左下の「SPRING-BOOT DASHBOARD」を選択し、[start] or [debug] を選択
    ※ Spring Bootに内包されたTomcatが起動し、実装したアプリがコンパイルされる。

表示確認

終わりに

拡張機能が充実していて、想像以上に使いやすかったです!InteliJのライセンス更新をせずにVSCodeを使い続けようか悩んでいる所です・・・。今後はより実践的なJavaの記事を上げていけるように努力していきます。

最終日は@tkxlabさんです!

参考

Spring BootをVSCodeで「Hello World」を表示させてみた
https://tech-lab.sios.jp/archives/19941

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
13
Help us understand the problem. What are the problem?