【Java】Spring:「@Service」の基本的な使い方

■概要

クラスを「サービス層のコンポーネント(ビジネスロジック担当)」としてSpringのコンテナ(DIコンテナ)に登録するためのアノテーション。

つまり、

  • @Service を付けたクラスは Spring によって自動的に Bean 登録される。
  • 他のクラス(例:Controller)から @Autowired などで使えるようになる。

■実装するサンプル処理の概要

GETのリクエストに対して、以下の処理を実装する。

メソッドURL(※)処理概要
GET/api/users/users/getid1から100までのランダムな数字を返す。
URLのドメインは「http://localhost:8080」

▼実行環境

実行環境は以下の通り

  • Java:バージョン21
  • Spring Boot:バージョン3.5.6

■クラス図

実装する処理のクラス図は以下の通り。

■サンプルコード

・UserController.java

package com.practice.annotation.anotools_spring.controller;

import com.practice.annotation.anotools_spring.dto.UserDTO;
import com.practice.annotation.anotools_spring.service.UserService;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.security.SecurityProperties.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

// Webリクエストを受け取るクラス
@RestController
// メソッドの戻り値を「HTMLビュー」ではなく「JSON」などのレスポンスボディとして返す
@RequestMapping("/api")
@RequiredArgsConstructor
public class UserController {

  @Autowired
  private final UserService userService;

  @GetMapping("/users/getid")
  public int getUserId() {
    return userService.getUserRandomId();
  }
}

・UserService.java

package com.practice.annotation.anotools_spring.service;

public interface UserService {

  public int getUserRandomId();

}

・UserServiceImpl.java

package com.practice.annotation.anotools_spring.service;

import java.util.concurrent.ThreadLocalRandom;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {

  @Override
  public int getUserRandomId() {

    // 1から100までのランダムな数字を返す
    return ThreadLocalRandom.current().nextInt(1, 101);
  }
}

■実行結果

request:http://localhost:8080/api/users/getid

response:

43

コメント

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