はじめに
「Javaでのアプリケーション開発=Spring Bootを学べばOK!」と思いながら学習を進めてきました。
しかし、どこか腑に落ちないことが多い…。
そこで知ったSpring Frameworkという存在。
Spring FrameworkとSpring Bootの関係を理解することは、Javaでアプリケーション開発を進めるにあたって非常に重要だと気づいたので、自分の理解をここでアウトプットすることにしました。
Spring Frameworkとは
- まず、Spring FrameworkはJavaのフレームワークの一種です。
- フレームワークとは、アプリケーション全体の骨組みや流れを管理する仕組みであり、開発者のコードを呼び出してアプリが動作します。
- Spring Frameworkは複数のライブラリを提供しており、これらのライブラリの機能を組み合わせることでアプリケーション開発が可能です。
- つまり、Spring Frameworkは、Webアプリケーションを開発するために使われるフレームワークです。
モジュールとライブラリとフレームワークの関係
-
モジュール:小さな機能単位。単一の目的に特化
例:spring-core(DI基盤)、spring-webmvc(MVC機能) -
ライブラリ:複数のモジュールをまとめた集合体
例:Spring Coreライブラリ =spring-core+spring-beans+spring-context+spring-expression -
フレームワーク:ライブラリ群+アプリ全体の制御やルール
例:Spring Framework = Spring Core + Spring Web + Spring JDBC などのライブラリ群 + IoCやDIによる制御
Spring Frameworkの代表的なライブラリとモジュール
| ライブラリ | 主なモジュール | 役割 |
|---|---|---|
| Spring Core | spring-core, spring-beans, spring-context, spring-expression | DI, Bean管理, アプリコンテキスト |
| Spring Web | spring-web, spring-webmvc, spring-websocket | HTTP処理, MVC, WebSocket |
| Spring JDBC | spring-jdbc, spring-tx | DBアクセス, トランザクション管理 |
| Spring ORM | spring-orm | Hibernate/JPA連携 |
| Spring AOP | spring-aop, spring-aspects | AOP(横断的関心事処理) |
| Spring Messaging | spring-messaging | メッセージング、STOMP |
| Spring Test | spring-test | 単体テスト・統合テスト |
| Spring WebFlux | spring-webflux | リアクティブWebアプリ開発 |
Spring Bootとは
- それではSpring Bootは何なのか?
- Spring Bootも同じく、Javaに対応するフレームワークです。
- どんなフレームワークかというと、Spring Frameworkをより簡単に使うためのフレームワークです。
- Spring Frameworkのみでアプリケーション開発をすると、使用するライブラリやモジュールの管理が大変らしい。
- そこで活躍するのがSpring Boot。
- Spring Bootを使うと、煩雑な設定や環境構築を最小化し、スターターという形で必要なSpring Frameworkのライブラリやモジュールをまとめて導入できます。
まとめ
- Spring Bootはアプリケーション開発に必要な直接的なライブラリやモジュールは提供していない。
- それらを提供しているのは、Spring Framework。
- Spring Bootを使うと、必要なモジュールをまとめて導入できるため、設定や環境構築の負担が軽くしてくれるフレームワーク。
- Spring Bootを学ぶだけでアプリケーションを作れると思っていたが、Spring Frameworkの各モジュールの使い方も理解する必要がある。
このあたりを整理しておくと、Spring FrameworkとSpring Bootの構造を正しく把握し、効率的にJavaアプリケーションを開発できるようになるなと感じました。