Spring Frameworkとは?【初心者向けに解説】

spring-framework

Spring Frameworkは最も人気のあるJavaフレームワークのひとつです。関連するフレームワークもたくさん開発されており、目的に合わせて使用することができます。この記事では、これらの詳細を解説していきます。

Spring Frameworkとは

Spring FrameworkはJava仮装マシン(JVM)用のオープンソースフレームワークです。ソースコードはGitHubで公開されています(こちら)。JVMの上で動作するJavaやKotlinなどで使用することができます。

特定のドメインに特化したフレームワークというわけではなく、汎用的な機能を提供するモジュール群から成ります。例えば、アスペクト指向プログラミング(AOP)をサポートするようなモジュールなどが用意されています。最初の開発が2003年頃なので、その頃にプログラミング言語界隈で研究が活発だったAOPのサポートがある事は個人的には納得感があります。

特徴的な機能

数多くのサービスがモジュールとして提供されていますが、その中でも特徴的な機能を挙げておきます。

Dependency Injection(DI)

DIはクラス間の依存関係を解決するためのデザインパターンです。日本語で「依存性の注入」 と言われたりもします。SpringにはDIを行うためのモジュールが組み込まれており、これが一番の特徴だとも言われています。

アスペクト指向プログラミング

アスペクト指向プログラミング(AOP)は、プログラミングパラダイムのひとつです。Springでは、このAOPをサポートしています。AOPはオブジェクト指向プログラミングでは解決できなかったクラスに対して横断的な機能をうまく扱うために考案されました。AOPの話になると必ずと言って良いほど引き合いに出される例は「ログ出力」です。ログ出力を行うような処理は、クラスを横断して色々な場所に同じような処理内容を記述する必要があります。しかし、これでは「ログ出力」という点において関心事の分離ができていないことになります。AOPではこの問題を解決することが目的となっています。AOPをサポートしたプログラミング言語としてはAspectJが有名です。

Springのサブプロジェクト

Springには、特定のドメインに特化したサブプロジェクトがいくつか存在します。実際は単体で使用するよりも、これらのフレームワークを併用することが多いと思います。例えば、Webアプリケーション開発のために利用されているものなどがあります。

以降では、これらのうちいくつかを簡単に紹介していこうと思います。

SpringBoot

Spring Frameworkを非常に簡単に使えるようにしたものです。サブプロジェクトの中でも近年とくに人気があり、主にWebアプリケーション開発などに用いられています。XML形式の設定ファイルを記述する必要がなくなったりと、より扱いやすいデザインになっています。

SpringMVC

MVCアーキテクチャをサポートするためのフレームワークです。MVCとはModel・View・Controlの略で、よく利用されるデザインパターンのひとつを指します。Webアプリケーションを開発する場合はこれを使用すると良いでしょう。一般にWeb開発に利用される基本的な機能が提供されます。

SpringRoo

コマンドラインインターフェース(CLI)からファイルを生成するためのツールです。CRUDを備えるベースコードの生成やアプリのバックアップを取ることなどができます。主に開発効率を上げるために用いられます(RAD; Rapid Application Developmentと呼ばれます)。Ruby on Railsにも同じようなコード生成器があるので、Rails経験のある方はそれを想像すると良いかもしれません。

STSを利用した開発

開発時には、STSという統合開発環境(IDE)を利用すると良いです。STSはEclipseを元に開発されており、Spring向けに拡張されたものです。JavaなどのJVM上で動作するプログラミング言語はIDEのサポートが強力なので、とくに理由がなければこれを利用すると良いと思います。