Skip to content
Published on

シンプルなSpring Bootアプリケーションを作る

Authors

手順

spring.ioでプロジェクトを作成

start.spring.ioにアクセスし、Javaバージョン、プロジェクト管理ツール、Bootバージョン、依存関係を設定した後、Generateボタンを押してプロジェクトファイルをダウンロードします。

私は以下のようにGradle-Groovy、Java、Boot 2.7.15、Java 11、spring-starter-web、thymeleafを選択しました。

start.spring.io

IntelliJでプロジェクトを実行

Generateボタンを押してダウンロードしたzipファイルを解凍し、IntelliJを起動して該当フォルダをopenします。

HelloController.javaの作成

Controllerという新しいパッケージを作成し、HelloController.javaファイルを以下のように記述します。@ControllerアノテーションはSpringにこのクラスをControllerとして管理するよう伝える部分で、@GetMapping("hello")はhelloサフィックスが付いたURLのGETリクエストとhello関数をマッピングする処理です。

HelloController.java
package hello.hellospring.controller;

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

@Controller
public class HelloController{
    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data", "hello!!");
        return "hello";
    }
}

hello.htmlの作成

ThymeLeafテンプレートエンジンを使用してWebブラウザに表示するため、resources、templatesフォルダの下にhello.htmlを作成し、thymeleaf文法に従ってControllerのmodelに付加して渡されたデータを画面に出力するコードを記述します。

hello.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
  <p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>

HelloController.javahello.htmlの2つのファイルを作成しました。プロジェクトのソースツリーは以下の通りです。

start.spring.io

Spring Bootの実行

HelloSpringApplicationにSpring Bootサーバーの起点であるmain関数が存在します。マウスをホバーするとrunボタンが表示されるので、このボタンを押してSpring Webサーバーを起動します。

以下のようにログメッセージにTomcatサーバーが8080ポートで正常に起動されたというメッセージが出力されれば正常です。

2023-09-03 10:14:44.512  INFO 53925 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2023-09-03 10:14:44.519  INFO 53925 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-09-03 10:14:44.519  INFO 53925 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.79]
2023-09-03 10:14:44.563  INFO 53925 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-09-03 10:14:44.564  INFO 53925 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 478 ms
2023-09-03 10:14:44.663  INFO 53925 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page: class path resource [static/index.html]
2023-09-03 10:14:44.752  INFO 53925 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2023-09-03 10:14:44.759  INFO 53925 --- [           main] h.hellospring.HelloSpringApplication     : Started HelloSpringApplication in 0.909 seconds (JVM running for 1.099)

以下のようにhttp://localhost:8080/helloにWebブラウザでアクセスすると、helloメッセージが表示されることを確認できます。

hello_spring_webui

Gradleでビルドして実行する方法

IntelliJを使用せずに、ターミナルで以下のコマンドを通じてもSpring Boot Applicationのビルドおよび実行が可能です。

$./gradlew clean build
$ cd build/libs
$ java -jar hello-spring-0.0.1-SNAPSHOT.jar

Springは本当に巨大なフレームワークで、以前はTomcatサーバーが内蔵されていなかったため開発に多くの困難がありましたが、現在はSpring Bootのおかげでこのように簡単にWebアプリケーションを作成できるようになりました。しかし、抽象化の度合いが上がった分、開発者がSpring coreに手を加える機会がないため、原理を理解せずに使用してしまう懸念があります。このような状態では、問題が発生した際に原因を特定することが容易ではありません。Spring Bootを使って素早く生産性の高いSpring開発を行いつつ、同時にSpringの内部にも常に関心を持つべきです。

References