【プログラミング】【java】Spring Frameworkについて - j-komatsu/myCheatSheet GitHub Wiki
Spring Framework(スプリング・フレームワーク)
Springは「魔法のポット」と思ってください。
通常ならお湯を沸かして、茶葉を入れて、温度を見て…と手順がたくさんありますが、Springはその「煩わしい手順」を自動でやってくれる魔法のポットです。開発者は「中身(ビジネスロジック)」だけを考えればいいようになります。
| 機能名 | 説明 | 入力例 | 出力(結果) |
|---|---|---|---|
| DI(依存性注入) | オブジェクトの生成や注入を自動で管理 | サービスAがリポジトリBに依存 | リポジトリBが自動注入される |
| AOP | 共通処理を一箇所にまとめる(ログ、トランザクション) | ログ処理を全メソッドに追加 | 1箇所の定義で全体に適用 |
| MVC | WebアプリをModel-View-Controllerで分離 |
/users にアクセス |
ユーザ一覧画面を表示 |
| ライブラリ | 説明 | 主な用途 | 備考 |
|---|---|---|---|
| Spring Core | DI/AOPなどの基本機能 | アプリ全体の基盤 | すべてのSpringアプリで使用 |
| Spring MVC | Webアプリケーションの構築 | Controller, View, Routing | REST API構築にも使用される |
| Spring Boot | 設定不要の高速開発ツール | アプリの起動・設定の自動化 | Spring初心者向けにも最適 |
| Spring Data JPA | DB操作の簡略化 | リポジトリ自動生成 | Hibernateと連携可能 |
| Spring Security | 認証・認可機能 | ログイン制御やアクセス制限 | OAuth2やJWT対応 |
| Spring Batch | バッチ処理 | 定期的なジョブ実行 | 大規模なバッチシステムにも対応 |
| Spring Cloud | 分散システム・マイクロサービス対応 | マイクロサービス連携 | Netflix OSSとも連携可能 |
| Spring Test | テスト機能 | 単体・統合テスト | JUnitやMock連携 |
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring!";
}
}入力例: ブラウザで http://localhost:8080/hello にアクセス
出力: Hello, Spring!
flowchart TD
A[ブラウザからリクエスト] --> B[Spring Controllerが受け取る]
B --> C[処理メソッドが実行される]
C --> D[レスポンスが返る]
- DIコンテナは
ApplicationContextが担当 - アノテーション:
@Component,@Service,@Repository,@Autowired
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}graph TD
Controller --> Service
Service --> Repository
Repository --> DB[(Database)]
| 比較項目 | Spring Framework | Spring Boot |
|---|---|---|
| 設定の量 | 多い | 最小限で済む |
| 起動方法 | Web.xmlや設定クラスが必要 |
mainメソッドで即起動 |
| 主な特徴 | 柔軟な設計が可能 | 自動設定(AutoConfiguration) |
@RestController
@RequestMapping("/api/users")
public class UserController {
@PostMapping
public ResponseEntity<String> createUser(@RequestBody User user) {
// 仮処理:ユーザ作成成功と返す
return ResponseEntity.ok("Created: " + user.getName());
}
}入力例(JSON)
{
"name": "Taro",
"email": "[email protected]"
}出力例: Created: Taro
| 観点 | Spring | 説明 |
|---|---|---|
| 拡張性 | ⭐⭐⭐⭐⭐ | 必要な機能だけ使えるモジュール構成 |
| 保守性 | ⭐⭐⭐⭐ | DI/AOPにより疎結合 |
| 学習コスト | ⭐⭐⭐ | 柔軟な分、やや複雑 |
| 起動速度 | ⭐⭐ | 標準Springはやや遅い(Bootで改善) |
- SpringはJava開発の「ベース基盤」
- DI/AOPなどの仕組みで効率化
- Spring Bootと組み合わせると爆速開発が可能
- 初学者にも優しいが、奥が深い世界
- Java 17+
- Spring Boot 3.x
- IDE: IntelliJ IDEA / Eclipse