■概要
クラスを「サービス層のコンポーネント(ビジネスロジック担当)」としてSpringのコンテナ(DIコンテナ)に登録するためのアノテーション。
つまり、
@Serviceを付けたクラスは Spring によって自動的に Bean 登録される。- 他のクラス(例:Controller)から
@Autowiredなどで使えるようになる。
■実装するサンプル処理の概要
GETのリクエストに対して、以下の処理を実装する。
| メソッド | URL(※) | 処理概要 |
|---|---|---|
| GET | /api/users/users/getid | 1から100までのランダムな数字を返す。 |
▼実行環境
実行環境は以下の通り
- 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
コメント