2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Spring の基本から実践的な開発まで

2
Posted at

はじめに

本記事では Spring の基本概念を整理したうえで、Spring Boot を中心に“実務で使われる部分”を応用編として解説します。

「DI / AOP は聞いたことがあるが、実務でどう使われているか分からない」
「Spring Boot は便利だが、何が“Boot”なのか説明できない」
「設定が少ない理由を理解しないまま使っている」
という状態の方も多いのではないでしょうか。

Spring Framework とは

Spring Framework は一言でいうと、
Java アプリケーション開発を疎結合・高拡張にするための基盤フレームワーク
です。

Spring の中核となる考え方

Spring の設計思想は、主に以下の 3 点に集約されます。

1. DI(Dependency Injection)

依存関係をクラス内部で生成せず、外部から注入する設計
・テストしやすい
・実装の差し替えが容易
・責務が明確になる
→ 大規模開発・長期運用に強い

2. AOP(Aspect Oriented Programming)

共通処理を横断的に分離する考え方
・トランザクション管理
・ログ出力
・認証・認可 など
→ 「業務ロジックに集中できる」設計

@Transactional
public void updateUser(User user) {
    // ビジネスロジックのみ
}

3. コンテナ(ApplicationContext)

Spring は DI コンテナとして動作します。
・Bean の生成
・ライフサイクル管理
・依存関係の解決
を Spring が一元管理します。

※DI コンテナ:
オブジェクト間の依存関係(必要な部品)を管理し、自動で生成・注入(提供)してくれるフレームワーク

なぜ Spring Boot が主流なのか

従来の Spring の課題

・XML / Java Config が多い
・初期設定が煩雑
・Web アプリ起動までが重い

Spring Boot の役割

Spring Boot は、Spring をすぐに使える状態にするための仕組みです。

Spring Boot のコア機能

1. 自動設定

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

この 1 行で以下が自動設定されます。
・Web サーバ(Tomcat)
・DispatcherServlet
・Jackson
・DataSource(条件付き)

2. Starter 依存関係

implementation 'org.springframework.boot:spring-boot-starter-web'

これだけで、
・Spring MVC
・Jackson
・Validation
・Logging
が一括で入る。

3. 組み込みサーバ

Docker / CI/CD との相性が非常に良い
・Tomcat / Jetty / Undertow
・WAR 不要、java -jar で起動

java -jar app.jar

よくある Spring Boot 構成

レイヤードアーキテクチャ例:

controller
 └ service
    └ repository
       └ entity

実務でよく使う Spring Boot 機能

application.yml による環境管理
・環境ごとの差分管理が容易
・プロファイル(dev / stg / prod)対応

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/app
    username: app
    password: secret

Validation

public class UserRequest {

    @NotBlank
    private String name;

    @Email
    private String email;
}
@PostMapping
public void create(@Valid @RequestBody UserRequest request) {
}

例外ハンドリング

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(RuntimeException.class)
    public ResponseEntity<?> handle(RuntimeException e) {
        return ResponseEntity.badRequest().body(e.getMessage());
    }
}

Spring Boot が向いているケース

・Web API(REST)
・業務システム(BtoB)
・バッチ処理
・マイクロサービス
逆に、軽量な CLI ツールのみなら過剰になる場合もあります。

まとめ

・Spring は DI / AOP / コンテナが本質
・Spring Boot は Spring を実務レベルに引き上げる仕組み
・「なぜ便利なのか」を理解すると設計の質が上がる

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?