Springの使用
Spring FrameworkとModel-View-Controller(MVC)パターンが好きなら、 PortletMVC4Springを使用してポートレットを開発できます。 このフレームワークを使用する場合、 Spring Web MVC を使用したサーブレットベースの Web アプリケーションの開発に既に慣れているかもしれません。 PortletMVC4Springは、MVCを使用してポートレットベースのアプリケーションを開発するためのものです。 次のような機能を備えた Spring Framework Liferay ポートレットを構築できます。
- 制御の反転(IoC)/依存性注入(DI)
- アノテーション
- セキュリティ
- バインディングと検証
- 複数パートファイルのアップロード
- … その他
PortletMVC4Springに関するトピックは以下のとおりです。
-
PortletMVC4Spring を使用したポートレットの開発: PortletMVC4Spring を使用してポートレットを作成およびデプロイする方法を示します。
-
アノテーションベースのコントローラ開発: プレーンな古い Java オブジェクト (POJO) とアノテーションを使用してコントローラを実装する方法を示します。
背景
PortletMVC4SpringプロジェクトはSpring Portlet MVCとして始まり、 Spring Frameworkの一部でした。 SPR-14129の下でプロジェクトが Spring Framework のバージョン 5.0.x から削除されたため、プロジェクトをフォークして名前を変更する必要が生じました。 これにより、Spring FrameworkおよびPortlet APIの最新バージョンとの互換性を確保するために、プロジェクトの改善と維持が可能になった。
Liferay は 2019 年 3 月に Spring Portlet MVC を採用し、プロジェクト名を PortletMVC4Spring に変更しました。
Spring Web MVCはPortletMVC4Springに似ていますが、ポートレット向けに最適化されています。 ポートレットのワークフローは、サーブレットのワークフローとは異なり、ポートレットへのリクエストには ACTION_PHASE と RENDER_PHASE という 2 つの異なるフェーズがあります。 ACTION_PHASE は一度だけ実行され、データベース操作などのバックエンドの変更やアクションをトリガーします。 RENDER_PHASE は、ディスプレイが更新されるたびにポートレットのコンテンツをユーザーに表示します。 したがって、単一のリクエストに対して、 ACTION_PHASE は一度だけ実行されますが、 RENDER_PHASE は複数回実行される可能性があります。 これは、システムの永続的な状態を変更する活動とコンテンツを生成する活動との間に明確な分離を提供する(そして必要とする)。 Portlet 2.0仕様では、イベントフェーズとリソースフェーズという2つのフェーズが追加され、どちらもアノテーション駆動型ディスパッチングによってサポートされています。
PortletMVC4Spring は、レンダリング、アクション、イベント、リソース提供のポートレット フェーズからのリクエストをサポートするアノテーションを提供します。Spring Web MVC は、 @RequestMapping アノテーションのみを提供します。 Spring Web MVC コントローラでは、 @RequestMappingで注釈が付けられた単一のハンドラ メソッドを持つことができますが、同等の PortletMVC4Spring コントローラでは、それぞれがフェーズ注釈の 1 つを使用する複数のハンドラ メソッドを持つことができます。 @ActionMapping、 @EventMapping、 @RenderMapping、または @ResourceMapping。
PortletMVC4Springフレームワークは、Webフレームワークの DispatcherServlet と同様に、ハンドラーにリクエストをディスパッチする DispatcherPortlet を使用します。このハンドラーは、構成可能なハンドラーマッピングとビュー解決を備えています。
ポートレット、ポートレットの仕様、ポートレットとサーブレットの違いに関する詳細については、 ポートレット を参照してください。
Liferayはまた、JSPとThymeleafのビューテンプレートを使うことを実証する、フル機能のサンプルポートレットを提供します。 これらは、フォームベースのポートレットアプリケーションが通常必要とする多くの機能を備えている。

サンプルはこちらから入手できます。
| ソースコード | Maven Central |
|---|---|
| 申請者用JSPポートレット | com.liferay.portletmvc4spring.demo.applicant.jsp.portlet.war |
| 申請者タイムリーフポートレット | com.liferay.portletmvc4spring.demo.applicant.thymeleaf.portlet.war |
PortletMVC4Springポートレットの基本的な理解と、Spring Web MVCアプリケーションとの比較について理解できたところで、いよいよPortletMVC4Springポートレットの開発に取り掛かりましょう。