Spring Boot基礎:コントローラとサービスの作成

Java

はじめに

この記事では、Spring Bootで基本的なWebアプリケーションを構築する方法を解説します。具体的には、コントローラサービスの作成を通じて、リクエストの処理方法とビジネスロジックの分離を学びます。エンジニア初心者でも理解できるように、各ステップを丁寧に説明していきます。


コントローラとサービスとは?

Spring Bootでは、Webアプリケーションを分かりやすくするために「コントローラ」と「サービス」という役割を分けます。

  • コントローラ:ユーザーからのリクエストを受け取り、適切な処理へ導く役割を持つ。通常、APIのエントリーポイントとして機能します。
  • サービス:ビジネスロジックやアプリケーションの主な機能を提供し、コントローラから呼び出されます。データの操作や処理の流れを管理します。

プロジェクトを作成

まず、Spring Bootのプロジェクトを作成します。Spring Initializrを使うと、必要な依存関係を含んだプロジェクトを簡単に生成できます。

やり方はこちら

Spring Boot基礎:Gradleを使ったプロジェクト作成と依存関係の追加
Spring Bootの基本をGradleで学ぼう!Spring Initializrを使ったプロジェクト作成から依存関係の追加、アプリケーションの起動方法までを初心者向けに解説します。

コントローラの作成

コントローラは、HTTPリクエストを処理する役割を担い、ユーザーとアプリケーションのインターフェースになります。ここでは、シンプルなメッセージを返すコントローラを作成してみましょう。

コントローラのコード例

  1. プロジェクト内にcontrollerパッケージを作成します。
  2. パッケージ内にHelloController.javaという名前で新しいクラスを作成し、以下のコードを記述します。
Java
package com.example.demo.controller;

import com.example.demo.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class HelloController {

    private final HelloService helloService;

    @Autowired
    public HelloController(HelloService helloService) {
        this.helloService = helloService;
    }

    @GetMapping("/hello")
    public String sayHello() {
        return helloService.getHelloMessage();
    }
}

コードの解説

  • @RestController:このクラスがコントローラであることを示します。
  • @RequestMapping("/api"):コントローラ全体に適用するURLのプレフィックスを設定します。
  • @GetMapping("/hello")/api/helloというエンドポイントでアクセス可能なHTTP GETリクエストを処理します。
  • HelloService:サービスを呼び出してメッセージを取得します。

サービスの作成

サービスクラスは、ビジネスロジックを実装するための場所です。ここでは、コントローラから呼び出されるシンプルなサービスを作成します。

サービスのコード例

  1. プロジェクト内にserviceパッケージを作成します。
  2. パッケージ内にHelloService.javaという名前で新しいクラスを作成し、以下のコードを記述します。
Java
package com.example.demo.service;

import org.springframework.stereotype.Service;

@Service
public class HelloService {

    public String getHelloMessage() {
        return "Hello, Spring Boot!";
    }
}

コードの解説

  • @Service:このクラスがサービス層であることを示します。
  • getHelloMessage():コントローラから呼び出され、メッセージを返します。このメッセージがユーザーに表示される内容になります。

アプリケーションの実行

サービスとコントローラが完成したら、アプリケーションを実行して動作を確認します。

  1. ブラウザでhttp://localhost:8080/api/helloにアクセスします。
  2. 正しく設定されていれば、「Hello, Spring Boot!」というメッセージが表示されます。

コントローラとサービスを使った設計のポイント

  • 役割の分離:コントローラはリクエスト処理、サービスはビジネスロジックを担当します。役割分担を行うことで、コードが読みやすくなり、メンテナンスが容易になります。
  • 依存性の注入:Springでは@Autowiredを使用して依存性注入(DI)を行い、テストやコードの再利用が簡単になります。

依存性の注入に関しては、理解が難しいので別記事にまとめました。

Java初心者必見!SpringのDI(依存性注入)をわかりやすく解説
Java Spring初心者向けに、DI(依存性注入)の基本をわかりやすく解説します。DIの仕組みやメリット、実装方法まで丁寧に紹介。この記事を読めば、Springでの開発がスムーズになります!

まとめ

Spring Bootでコントローラとサービスを使った基本的なWebアプリケーションの構成を学びました。エンドポイントからのリクエストを処理し、サービスでビジネスロジックを実装することにより、シンプルで拡張性のあるコードを書くことができます。この方法を理解すれば、さらに複雑な機能もスムーズに実装できるようになるでしょう。

このチュートリアルを基に、他のサービスやコントローラも作成し、より複雑なアプリケーションに挑戦してみてください。

コメント

タイトルとURLをコピーしました