Spring BootでHello World

Spring Bootの開発環境構築~Hello World~Basic認証~実行可能Jarでの実行までの手順をご紹介します。

条件

  • Windows 10 64bit
  • Spring Tool Suite 4

事前準備

まずはPCにJDKをインストールします。

  • JDKがすでにインストール済みの場合、この手順は不要です。
  • インストール済みの場合、コマンドプロンプトでjava -versionとコマンドを実行するとバージョン情報が表示されます。

JDKには様々な種類がありますが、ここでは「AdoptOpenJDK」をpインストールすることにします。

ダウンロード

以下のサイトから最新バージョンのzipをダウンロードします。

https://adoptopenjdk.net/installation.html?variant=openjdk12&jvmVariant=hotspot#x64_win-jdk

様々な選択肢がありますが、ここでは以下を選択した状態で、Windows x64 jdk binaryのリンクをクリックします。

  • OpenJDK 12(Latest)
  • HotSpot
  • Windows x64 jdk

解凍

ダウンロードしたファイルを以下のディレクトリに解凍します。(任意の場所でOKです)

C:\Users\user\jdk

パスの設定

JDKのパスを通します。

今回は、以下のディレクトリにインストールしました。

C:\Users\user\jdk\jdk-12+33

Javaのプログラム本体は、当該ディレクトリのbinの下にあるため、以下のディレクトリにパスを通します。

C:\Users\user\jdk\jdk-12+33\bin

コントロールパネル > システムとセキュリティ > システム > 設定の変更 を選択します。

システムのプロパティ画面が開くので、詳細設定タブの環境変数を選択します。

ユーザ環境変数のPathを選択して、編集ボタンを押します。

環境変数名の編集画面が開くので、新規ボタンを押して以下のパスを入力しOKボタンを押します。
(パスは自分の環境に合わせて適宜変更してください。)

C:\Users\user\jdk\jdk-12+33\bin

環境変数画面、システムのプロパティ画面でもOKボタンを押して画面を閉じます。

確認

コマンドプロンプトを開き、任意のディレクトリで以下のコマンドを実行します。

java -version

以下のように、OpenJDKのバージョン情報が表示されればOKです。

開発環境構築

ダウンロード

以下のサイトから、Spring Tools 4 for Eclipseをダウンロードします。

https://spring.io/tools

Windows 64-bit版をダウンロードします。

解凍

ダウンロードしたファイルを以下のディレクトリに解凍します。(任意の場所でOKです)

C:\Users\user\spring_tools

実行

解凍したディレクトリ内のSpringToolSuite4.exeを実行します。

ワークスペースの場所はデフォルトのままで、「Use this as the default and do not ask again」をチェックしてLaunchボタンを押します。

Spring Tool Suiteが立ち上がります。

英語表記なので、下記の手順で日本語化を行います。

一旦、Spring Tool Suiteを終了します。

日本語化

ダウンロード

以下のサイトの「Pleiades プラグイン・ダウンロード」からダウンロードします。

http://mergedoc.osdn.jp/

windowsの場合、以下のようなzipファイルがダウンロードされます。

  • pleiades-win.zip

解凍&実行

ダウンロードしたzipを任意の場所に解凍します。

解凍したフォルダ内のsetup.exeをダブルクリックすると、Pleades 日本語化プラグインのセットアップが起動します。

「選択…」で、SpringToolSuite4.exeを選択し、日本語化するボタンを押します。

終了ボタンを押して閉じます。

Spring Tool Suiteを起動すると、日本語化されています。

Hello Worldプロジェクト作成

プロジェクト作成

ファイル > 新規 > Springスターター・プロジェクトを選択します。

新規Springスターター・プロジェクト画面が開きます。

名前に「hello」と入力し、そのほかはデフォルトのまま次へボタンを押します。

新規Springスターター・プロジェクト依存関係画面で、以下の2つを選択して完了ボタンを押します。

  • Thymeleaf
  • Web

しばらくすると各種コンポーネントがインポートされてWeb画面を作るための雛形が作成されます。

実装

Controller

com.example.demoのフォルダ配下に、HelloController.javaというファイルを作成し以下のように記述します。

package com.example.demo;

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

@Controller
public class HelloController {
	@RequestMapping("/hello")
	public String hello(Model model) {
		model.addAttribute("hello", "Hello World!");
		return "hello";
	}
}

Template

templatesフォルダ配下に、hello.htmlというファイルを作成し以下のように記述します。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<meta charset="UTF-8" />
	<title></title>
</head>
<body>
<p>
	<span th:text="${hello}">Hello World!</span>
</p>
</body>
</html>

実行

プロジェクトを右クリックし、実行 > Spring Bootアプリケーションを選択します。

アプリケーションが起動し、コンソールに以下のようなログが出力されます。

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.4.RELEASE)

2019-04-13 09:51:40.773  INFO 10804 --- [           main] com.example.demo.HelloApplication        : Starting HelloApplication on DESKTOP-RAGH9BO with PID 10804 (C:\Users\user\Documents\workspace-spring-tool-suite-4-4.2.0.RELEASE\hello\target\classes started by kmurata in C:\Users\user\Documents\workspace-spring-tool-suite-4-4.2.0.RELEASE\hello)
2019-04-13 09:51:40.775  INFO 10804 --- [           main] com.example.demo.HelloApplication        : No active profile set, falling back to default profiles: default
2019-04-13 09:51:41.735  INFO 10804 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2019-04-13 09:51:41.759  INFO 10804 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-04-13 09:51:41.760  INFO 10804 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.17]
2019-04-13 09:51:41.859  INFO 10804 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-04-13 09:51:41.859  INFO 10804 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1056 ms
2019-04-13 09:51:42.061  INFO 10804 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-04-13 09:51:42.276  INFO 10804 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2019-04-13 09:51:42.279  INFO 10804 --- [           main] com.example.demo.HelloApplication        : Started HelloApplication in 1.782 seconds (JVM running for 2.548)

ブラウザで以下のURLを開くと、Hello World!と表示されます。

http://localhost:8080/hello

ポイント

それぞれの対応は以下の通りです。

  • @RequestMappingで指定した文字列がURLに対応
  • model.addAttribute(key, value)でkeyに指定した値が、htmlの${key}に対応
  • returnで返す文字列が、templatesのhtmlファイル名に対応

例として以下のようになります。

Controller

package com.example.demo;

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

@Controller
public class HelloController {
  @RequestMapping("/helloWorld")
  public String hello(Model model) {
    model.addAttribute("scope", "この文字列が表示されます!");
    return "fileName";
  }
}

Template

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8" />
  <title></title>
</head>
<body>
<p>
  <span th:text="${scope}">Hello World!</span>
</p>
</body>
</html>

Basic認証

一旦、アプリケーションを停止します。

依存関係の追加

プロジェクトを右クリックし、Spring > スターターの編集を選択します。

Edit Spring Boot Starters画面が開くので、セキュリティーを選択してOKボタンを押します。

実行

アプリケーションを実行し、再度以下のURLを開くと認証画面が表示されます。

http://localhost:8080/hello

デフォルトのユーザー名は「user」で、パスワードは起動時のログに出力されます。

今回は、以下のようなパスワードが生成されました。

Using generated security password: 6253b9e3-4286-4a78-939c-8684867afe90

上記の情報でログインすると、Hello World!と表示されます。

認証情報変更

application.propertiesに定義することで、ユーザー名およびパスワードを指定することが出来ます。

以下のように記述した場合、ユーザー名は「admin」、パスワードは「password」となります。

spring.security.user.name=admin
spring.security.user.password=password

実行可能Jar

Spring Bootでは従来のように、warを作成してTomcatやJettyなどのWebコンテナの指定の場所に配備する必要はありません。

Spring Boot自体にアプリケーションサーバーが組み込まれていて、jarで実行可能です。

Jar作成

プロジェクトを右クリック > 実行 > Maven installを選択します。

様々な処理が実行され、しばらくするとtagetフォルダの下にjarが作成されます。

「.original」のついていない「hello-0.0.1-SNAPSHOT.jar」が実行可能Jarです。

実行

作成した実行可能JarをWindows上で動作させてみます。

「hello-0.0.1-SNAPSHOT.jar」を以下に配置します。

C:\Users\user>

以下のコマンドでjarを実行します。

java -jar hello-0.0.1-SNAPSHOT.jar

ブラウザで確認すると正しく動作していることがわかります。

参考

AdoptOpenJDK

https://adoptopenjdk.net/installation.html?variant=openjdk12&jvmVariant=hotspot#x64_win-jdk

Spring Tools 4

https://spring.io/tools

MergeDoc Project

http://mergedoc.osdn.jp/

Spring徹底入門

Spring BootでHello World” に対して2件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です