Spring
2022.09.30
Spring 5でできることは?4からの変更点や互換性について解説
2023.11.18

今回は、Javaフレームワークでよく利用されているSpring5について紹介していきます。


Spring Framework5の概要や、これまでのバージョンからの変化点や互換性について、初級者エンジニア向けに詳しく解説していきますね。


1.Spring Frameworkの歴史

Spring Frameworkは最も利用されているJavaフレームワークであり、主にWebアプリケーションを開発するときに使用されます。現在Spring Frameworkを中心に、10以上のさまざまなSpringプロジェクトが存在し、大きなエコシステムを形成しています。


Spring Frameworkは、2004年にバージョン1.0がリリースされ、その後さまざまなバージョンがリリースされました。以下にSpring Frameworkの歴史をまとめたので、ご確認ください。

バージョンリリース日概要
1.02004年EJBを使わず堅牢なJ2EEアプリケーションを開発できる。
1.22005年DIコンテナ、AOP、XMLベースのBean定義、フレームワークモジュール間の疎結合化、トランザクション管理、データアクセスなどの機能を実現。
2.02006年Spring SecurityやSpring Web FlowなどWebアプリケーション開発に必要なものを中心にSpring Frameworkの周辺プロジェクトが発足。
2.52007年DIやMVCに対応。さらに、Spring IntegrationやSpring Batchといったプロジェクトが発足。
3.02009年JSR330に対応。JPA2.0やBean Validationなど、Java EE6をサポート。
4.02013年JavaSE8やJavaEE7に対応。WebSocketやWebメッセージングのサポートを実施。




2.Spring Framework5の概要


2017年9月にSpring Framework5がリリースされました。Spring Framework5では新たなリアクティブWebフレームワークを備えており、2004年のプロジェクト開始以来最も重要なリリースと言われています。


Spring Framework5のリアクティブWebフレームワークであるSpring WebFluxは、React3.1をベースとしており、アノテーションと関数型プログラミングの両方をサポートします。



3.これまでのバージョンからの主な変更点


ここからは、Spring Framework5の主な変更点を5つの項目に分けて紹介します。

①JDK 8、Java EE 7をサポート

Spring Framework5では、JDK8以上が必須となりJDK6と7のサポートが終了します。これはSpring Framework5のソースコード自体がJDK8からサポートされたラムダ式、Stream API、Optionalなどの機能に依存するコードになっているためです。


またJava EE7以上が必須になりました。Java EE8のServlet4.0、Bean Validation2.0、JSON Binding APIなど一部機能をサポートします。

②4系で非推奨だったパッケージ、クラス・メソッドの削除

Spring Framework5では以下のパッケージ、クラスやメソッドが削除されています。

  1. Tiles2
  2. Hibernate ORM 3.6および4.x
  3. Velocity
  4. JasperReports
  5. XMLBeans
  6. Java Data Objects
  7. GuavaのCache機能

③コア機能

アプリケーションの種類に依存しないコア機能に対して、次の変更が行われています。

  1. JDK8でサポートされた仕組みを利用し、メソッドパラメータに効率的にアクセス可能
  2. いくつかのインターフェースにおいて、JDK8でサポートされたデフォルトメソッドの実装
  3. リソースを抽象化するインターフェースResourceにisFile()メソッドが追加され、リソースがファイルシステム上に存在するか判定が可能
  4. Spring-jclが追加され、Commons LoggingのAPIを介してJUL経由でログ出力が可能

④WebMVC

Spring Web MVC関連に対する主な変更点は以下の通りです。

  1. Spring Framework提供のサーブレットフィルタが、Servlet3.1のAPI仕様準拠の実装に変更
  2. Spring MVCのHandlerメソッドの引数でPushBuilderを指定できるようになった
  3. MediaTypeFactoryが追加され、統一的なメディアタイプ解決の仕組みをサポート
  4. Jackson2.9がサポート対象になった
  5. Java EE8の構成要素であるJSON Bindingをサポート
  6. Google Protobuf 3.xがサポート対象になった
  7. AntPathMatcherの代わりに、効率的なパースと拡張構文を使用できるParsingPathMathcherが追加された
  8. @ExceptionHandlerメソッドでRedirectAttributesが使用可能
  9. ResponseStatusExceptionが追加され、HTTPステータスの制御可能

⑤Kotlinサポート

Spring Framework5では、Kotlinを使って開発しやすくするための対応が以下のように行われています。

  1. Kotlin Extensionsの仕組みを活用し、Spring FrameworkアプリケーションをKotlinらしいコードで実装できる
  2. Reified type parametersの仕組みを活用し、RestTemplateやWebFlux向けのAPIなどで、符号化・複合化対象のクラスをメソッドの引数に明示的に指定しなくても済む
  3. Spring提供のメソッドにKClassオブジェクトを渡せるようになる
  4. @RequestParamや@RequestHeaderなどをインジェクションする際に、KotlinのNull Safetyの仕組みが使える
  5. 関数型インターフェースを利用したBean登録で、Kotlin用のDSL(Domain Specific Language)が用意されている
  6. ScriptTemplateViewでKotlinのスクリプトが使える


※掲載された社名、製品名は、各社の商標及び登録商標です。

この記事をシェア