Spring Frameworkのアップデートに伴い、以下の条件に該当する場合はアプリケーションの修正をしてください。
項番 | 条件 | 影響 | 修正方法 |
1 | リクエストのデータを入力とする@RequestParam等のコントローラメソッド引数が型変換をしている場合 | リクエストのデータの空の文字列が型変換によりNULLへ変換される場合、リクエストのデータが欠落しているものとして扱われます。 | 以下のいずれかへ修正してください。
|
2 | @RequestMapping等に指定するパスについて、任意の拡張子(.*)を付与したパスのマッチングも期待して利用している場合 | @RequestMapping等のパスマッチングのデフォルトの動作が変わります。 変更前:
変更後:
| @RequestMapping等の指定パスに任意の拡張子(.*)を付与したパスのマッチングが実行されないことを考慮して、パスを修正してください。 また、変更前の動作をコンテントネゴシエーションに活用している場合は、AcceptヘッダーやURLのクエリパラメーターでの実現を検討してください。 |
3 | JSON形式のデータをHTTPレスポンスへ書き込み処理中に発生する可能性があるJSONのシリアライズエラーをアプリケーションで例外処理している場合 | JSONのシリアライズエラーが発生した場合の動作が変わります。 変更前:
変更後:
| HTTPレスポンスへ書き込み処理中のデータがHTTPレスポンスへ反映されることを考慮して例外処理を修正してください。 |
4 | Spring Frameworkから同期アプリケーション連携実行基盤のアプリケーションを呼び出す際に、MsyncJCACallクラス経由で呼び出す場合 | MsyncJCACallクラスを使用したアプリケーション呼び出し機能は、将来的に機能が廃止されるため、非推奨となります。 | 本機能の新規使用を控え、現在使用している場合は他の方法への移行を検討してください。 |
5 | リモーティング機能を使用する場合 | リモーティング機能は、将来的に機能が廃止されるため、非推奨となります。 | 本機能の新規使用を控え、現在使用している場合は他の方法への移行を検討してください。 |
Spring Frameworkのバージョン変更に伴い、以下の条件に該当する場合はアプリケーションの修正をしてください。
項番 | 条件 | 影響 | 修正方法 |
1 | Spring IDEを使用する場合 | Spring IDEを使用できません。 | 新たな開発ツールへ移行してください。 またEclipse向けSpring Tool Suite 4へ移行する場合、かつ、XML形式のBean定義ファイルの修正量が多い場合はJava形式のBean定義ファイルを追加し、既存のXML形式のBean定義ファイルから追加したJava形式のBean定義ファイルを参照することを推奨します。実装方法は表の下記の例を参考にしてください。 |
2 | バージョンを含むXSDファイルを指定している場合 | バージョンを含むXSDファイルが提供されなくなったため、アプリケーションのビルド時やアプリケーションの起動時にエラーが発生する場合があります。 | バージョンを含まないXSDファイルを指定してください。 またXSDファイルのバージョン変更に伴って廃止された属性を置き換えてください。 |
3 | Spring FrameworkのAPIにおいて@Nullableが付与されていない引数にNULLを指定する場合 | Spring FrameworkのAPIにおいて@Nullableが付与されていない引数にNULLを指定できなくなりました。@Nullableの付与有無はJavadocを確認してください。 | Spring FrameworkのAPIの引数にNULLを指定しないように修正してください。 |
4 | 以下のすべての条件に該当する場合です。
| CookieLocaleResolverが生成するCookieのロケールの区切り文字が変わります。 変更前:
変更後:
| Cookieを読み込むAPIをロケールの区切り文字“-”に対応しているAPIへ修正してください。 またはCookieLocalResolverのlanguageTagCompliantプロパティをfalseに設定してください。 |
5 | 以下のいずれかの条件に該当する場合です。
| CookieLocaleResolverが生成、および読み込むCookieのロケールとタイムゾーンの間の区切り文字が変わります。 変更前:
変更後:
| Cookieを生成、読み込むAPIをロケールとタイムゾーンの間の区切り文字が"/"のCookieを生成、読み込むように修正してください。 |
6 | @RequestMappingのproduces属性にパラメタを含む形式で条件を設定する場合 | @RequestMappingのマッチングの判定処理が変わります。 変更前:
変更後:
| パラメタをマッチングの判定に使用しない場合はproduces属性にパラメタを含めない形式で条件を設定してください。 |
7 | 以下のすべての条件に該当する場合です。
| データベースからロードしたデータを手動でFlushした際の動作が変わります。 変更前:
変更後:
| @Transactionalを付与したクラス、またはメソッドでデータベースからロードしたデータを手動でFlushしたい場合は@Transactional(readOnly=false)を使用してください。 |
8 | O/Rマッピング連携(JPA)でJNDIからEntityManagerFactoryを取得する場合 | アプリケーション実行時にClassCastExceptionが発生し、実行が失敗する場合があります。 | O/Rマッピング連携(JPA)を使用する場合は、LocalContainerEntityManagerFactoryBeanを使用してください。 詳細は“2.3.3.5 O/Rマッピング連携(JPA)”を参照してください。 |
9 | 以下のすべての条件に該当する場合です。
| NULLのBeanの要素がインジェクションされなくなります。 | NULLのBeanの要素がインジェクションされないことを考慮して、インジェクション先の変数の使用方法を修正してください。 |
10 | ListableBeanFactory#getBeansOfTypeを使用してNULLのBeanを含むインスタンスを取得していた場合 | ListableBeanFactory#getBeansOfTypeの戻り値にNULLのBeanが含まれなくなります。 | NULLのBeanが含まれなくなることを考慮して、戻り値の使用方法を修正してください。 |
11 | O/Rマッピング連携(Hibernate)でJTATransactionManagerを使用する場合 | アプリケーション実行時にTransactionRequiredExceptionが発生し、実行が失敗する場合があります。 |
|
例
<context:component-scan />を使用してXML形式のBean定義ファイルからJava形式のBean定義ファイルを参照する例を示します。
XML形式のBean定義ファイル:
… <beans> <context:component-scan base-package="com.example.config" /> … <beans> … |
Java形式のBean定義ファイル:
@Configuration
@ComponentScan(basePackages="com.example.config")
public class UserConfig{
…
} |
Spring Framework 4.3は、Spring Framework 3.2で提供されていた一部のパッケージが削除されています。それにより、Spring Framework 4.3から一部機能が廃止されています。廃止された主な機能を以下に示します。
機能名 | パッケージ名 | 説明 |
---|---|---|
iBATISとの連携 | org.springframework.orm.ibatis | Spring Framework 4.3はiBATIS連携が廃止されました。iBATISと同等の実装でO/Rマッピングを使用する場合は、iBATISの後継機能であるMyBatisを使用してください。MyBatisについては、“第3章 MyBatis”を参照してください。 |
org.springframework.orm.ibatis.support | ||
Strutsとの連携 | org.springframework.web.struts | Spring Framework 4.3はStrutsとSpring Frameworkの連携機能が廃止されました。 |