4.Spring Bootの基礎ー2コントローラー

前回作成したプロジェクトをそのまま利用し、今回は「**コントローラー」**の作成方法と動作確認を行う。
1. 基本設定
まずは build.gradle
を開き、中身を確認する癖をつく必要がある。
plugins {
id 'java'
id 'war'
id 'org.springframework.boot' version '3.4.7'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'com.example'
version = '0.1.1.alfa'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
今(作成日)のSpring Bootの最旧バージョンは3.4.7である。
通常の場合、プロジェクトを生成すると、生成時にチェックしたdependenciesにより、プロジェクトのライブラリーに基本的なライブラリー群と、選択したdependenciesのライブラリーが追加される。
また、build.gradle
の中のdependencies{ }内にその構造に合わせて追加記入することで又ライブラリーが追加される。
もし、最初も、追加記入してもライブラリー群に追加されない場合、
「Refresh Gradle Project」して、インストールされるか確認する。
それでもできない場合、
id 'org.springframework.boot' version '3.4.7'
部分を修正して、バージョンを変更して又「Refresh Gradle Project」してみてもいい。出来たら又バージョンを戻してもいい。
2.コントローラーの生成
Spring Bootを利用した開発の場合、ブラウザーの要請を処理するためのJavaクラスとして、「コントローラー」を要する。クライアントの要請がサーバー側に届くと、コントローラーがそれを処理する形でなっている。
で、生成する時は、「Class」でいい。又、Packageには視認性のために.Controller
と追加で記入する。又、名前は「パスカルケース」が一般的。
package com.example.onlyHelloWorld.controller;
public class OnlyHelloWorldController {
}
「Finish」で生成すると、このようなjavaファイルが生成される。これから、このファイルがコントローラーとして機能できるようにその内容を記入する。
package com.example.onlyHelloWorld.controller;
@Controller
public class OnlyHelloWorldController {
}
@controller
というアノテーションを記入すると、最初はエラー表示だ赤いアンダーラインが表示されるが、その場でCtrl + 1を押すと、自動修正案が表示される。
ここで「Import 'Controller'(org.springframework.stereotype)」を選択すると自動的にimport文が追加される。
package com.example.onlyHelloWorld.controller;
import org.springframework.stereotype.Controller;
@Controller
public class OnlyHelloWorldController {
}
同じコツでほかのアノテーションとインポート文を追加する。
package com.example.onlyHelloWorld.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class OnlyHelloWorldController {
@GetMapping("/hello")
@ResponseBody
public String hello() {
return"Hello World";
}
}
@Controller
: Spring コンポーネントスキャン機能により、当クラスを「MVCコントローラー」として登録する。つまり、リクエストを受けるハンドラーメソッドを含むクラスをSpringが認識して適切にルーティングする。
@GetMapping("/hello")
: HTTPのGet方式のリクエストで/hello
へのアクセスがあった時、以下のhello()
メソッドを呼び出すための設定で、必ずしもメソッドと一致する名称である必要はないが、あえて違う名称を使う理由もなくコーディング上の利便性のために同じ名称を使う方がいい。
@ResponseBody
: メソッドの戻り値をHTMLやJSONとしてHTTPレスポンスボディに直接書き出すことを指定する。めちゃくちゃ簡単に言うと、結局このメソッドに書くことを当パスに出力するために必要なアノテーション
結果で、http://localhost:ポート番号/hello
に接続すると「Hello World」というStringが出力される。
3.動作テスト
Eclipseで、Spring Bootアイコンのボタンをクリックして、「Boot Dashboard」という「Prespective」を開く。そして、当プロジェクトを右クリックして「Start」もしくは「(Re)Start」をクリックする。
ダッシュボードでこのように表示さっれうと成功。
この状態で又「Boot Dashboard」で当プロジェクトを右クリックして今回は「Open Web Browser」をクリックする。(接続時、接続先をhttp://localhost:ポート番号
からhttp://localhost:ポート番号/hello
に変更する必要がある。)
このようにhello()
メソッドの「Hello World」というStringが出力されると成功。当プロジェクトのポート番号はデフォルトの「8080」のままである。
4.追加加工実験
package com.example.onlyHelloWorld.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class OnlyHelloWorldController {
@GetMapping("/hello")
@ResponseBody
public String hello() {
return"Hello World";
}
@GetMapping("/bye")
@ResponseBody
public String bye() {
return"Go a way World";
}
}
このように、コントローラー内にメソッドを追加する。こうしても、http://localhost:8080/hello
への接続は除害されることなく正常的に機能する。又、追加されたパスも正常機能する。
このように、http://localhost:8080/bye
に接続すると、「Go a way World」というStringが出力されるのを確認できる。
ここで更に更に加工を加えてみる。
package com.example.onlyHelloWorld.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class OnlyHelloWorldController {
@GetMapping("/hello")
@ResponseBody
public String hello() {
return"Hello World";
}
@GetMapping("/bye")
@ResponseBody
public String bye() {
return"Go a way World<br>" + "See you Next Time.<br>" + "<b>Bye Bye.</b>";
}
}
このように+
でString
要素を増やすことができ、” ”
の中にHTMLタグを入れてその機能を生かすこともできることが以下のように額人で来た。
このように、Spring Bootではコントローラーが大事な中髄の一つとして機能する。わかりやすく言うとHubやロビーみたいなものだろう。
Subscribe to my newsletter
Read articles from フロイト directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
