【プログラミング】【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