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をダウンロードします。
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 プラグイン・ダウンロード」からダウンロードします。
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!と表示されます。
ポイント
それぞれの対応は以下の通りです。
- @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を開くと認証画面が表示されます。
デフォルトのユーザー名は「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