SpringSourceは、Spring Mobile 1.0をリリースした。 Spring Mobileには、モバイルWebアプリケーションの開発に役立ちSpring MVCのへの拡張が含まれてい る。
Spring Mobileは、サーバー側でデバイスを検知し、開発者がデバイスに応じた異なるコンテンツを提供できるにする。これは、CSS3 メディアクエリ とResponsive Web Design 技術を使うのとは対照的である。この方法では、検知や漸進的な改善は、クライアント側でなされる。
Spring Mobileは次の3つの主要な機能を備えている。
デバイス解決
デバイス解決は、要求を発信したデバイスを決定するためにHTTPリクエストを分析するプロセスのことでる。これは通常、User-Agentヘッダと他のリクエストヘッダーを調べることによって達成できる。 モバイルとデスクトップ・ブラウザを別々に処理する必要がある場合に便利だ。 有効にするには、DispatcherServletコンフィグレーションに DeviceResolverHandlerInterceptorを追加する。
<mvc:interceptors> <bean class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" /> </mvc:interceptors>
デバイス解決には、LiteDeviceResolverが既定で使われる。これは WordPress Mobile Packの検知アルゴリズム を基にしている。DeviceResolverHandlerInterceptorのコンストラクタ引数を注入することにより、別のDeviceResolver実装 をプラグインできる。WURFLのようなより洗練されたデバイスのリゾルバは、画面サイズ、製造元、モデル、または優先マークアップなどの特定のデバイスの機能を識別することができる。
DeviceUtils.getCurrentDevice()を呼び出すことによって、現在のデバイスを取得することができる。また、DeviceWebArgumentResolverを設定した後に@ Controllerのメソッドのいずれかに、引数として現在のデバイスを渡すことができる。
<mvc:annotation-driven> <mvc:argument-resolvers> <bean class="org.springframework.mobile.device.DeviceWebArgumentResolver" /> </mvc:argument-resolvers> </mvc:annotation-driven>
サイトの優先順位の管理
サイトの優先順位の管理によって、ユーザーはモバイルか通常のサイトのどちらを好むかを示すことができる。 Spring Mobileの実装は、クエリパラメータベースのサイトの優先表示、プラグイン可能なSitePreferenceストレージをサポートStandardSitePreferenceHandlerである。SitePreferenceがユーザーによって明示的に示されていない場合は、デフォルトではユーザーのデバイスに基づいて導出され る。ユーザーが示したサイト設定は、SitePreferenceRepositoryに格納され、デフォルトの実装では、クライアント側のクッキーに格納する。
サイトの優先順位の管理を有効にするには、DispatcherServletコンフィギュレーションにSitePreferenceHandlerInterceptorを追加する。
<mvc:interceptors> <bean class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" /> <bean class="org.springframework.mobile.device.site.SitePreferenceHandlerInterceptor" /> </mvc:interceptors>
ユーザーは、サイト優先順位を site_preferenceクエリパラメータを送信するリンクをクリックすることでも、指定することができる。
<a href="?site_preference=normal">Normal</a> | <a href="?site_preference=mobile">Mobile</a>
指定されたSitePreferenceは "currentSitePreference"という名前のリクエスト属性として使用可能 である。また、SitePreferenceWebArgumentResolverを設定した後に、@ Controllerのメソッドの1つに引数として現在のSitePreferenceを渡すことがでる。
<mvc:annotation-driven> <mvc:argument-resolvers> <bean class="org.springframework.mobile.device.DeviceWebArgumentResolver" /> <bean class="org.springframework.mobile.device.site.SitePreferenceWebArgumentResolver" /> </mvc:argument-resolvers> </mvc:annotation-driven>
サイト切り替え
サイトの切り替えは、デバイスと指定されたサイトの優先度に基づいてユーザーを最も適切なサイトに切り替える機能だ。現在は、3つの SiteSwitcher(サイト切り替え)実装がある。"mDot"ファクトリメソッドは、モバイルユーザーを m.${DOMAIN}にリダイレクトするSiteSwitcherを 構築する。 "dotMobi"ファクトリメソッドは、モバイルユーザーを ${DOMAIN - TLD}.mobiにリダイレクトするSiteSwitcherを 構築する。"urlPath"ファクトリメソッドは、モバイルユーザーを ${DOMAIN}/${MOBILE_PATH}にリダイレクトするSiteSwitcherを 構築する。次は、mDot SiteSwitcherを構成する方法の例だ。
<mvc:interceptors> <bean class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" /> <bean class="org.springframework.mobile.device.switcher.SiteSwitcherHandlerInterceptor" factory-method="mDot"> <constructor-arg value="domain.com" /> </bean> </mvc:interceptors>
詳細については、4分の Spring Mobileスクリーンキャストを見て、Spring Mobile Reference Manualを読んで欲しい。使い始めるには、リリース配布をダウンロードするか、Maven依存関係を追加する。
<dependency> <groupId>org.springframework.mobile</groupId> <artifactId>spring-mobile-device</artifactId> <version>1.0.0.RELEASE</version> </dependency>
Spring Mobileのサンプルは、GitHub上で見つけることができる。