Spring Mobile
2.0.0.M3Spring Mobile は、Spring Web サイトにリクエストを行うデバイスのタイプを検出し、そのデバイスに基づいて代替ビューを提供する機能を提供するフレームワークです。すべての Spring プロジェクトと同様に、Spring Mobile の真の力は、どれほど簡単に拡張できるかにあります。
機能
モバイルおよびタブレットデバイスのサーバー側検出のためのデバイスリゾルバーの抽象化
ユーザーが「通常」、「モバイル」、または「タブレット」のどちらのエクスペリエンスを好むかをユーザーが示すことができるサイト設定管理
ユーザーのデバイスとオプションで指定されたサイト設定に基づいて、ユーザーをモバイル、タブレット、または通常の最も適切なサイトに切り替えることができるサイトスイッチャー
特定のデバイスのさまざまなビューを整理および管理するためのデバイス対応ビュー管理
Spring Boot 構成
Spring Mobile を使用するには、次の依存関係をアプリケーションに追加する
<dependencies>
<dependency>
<groupId>org.springframework.mobile</groupId>
<artifactId>spring-mobile-device</artifactId>
<version>2.0.0.M3</version>
</dependency>
</dependencies><repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
dependencies {
compile 'org.springframework.mobile:spring-mobile-device:2.0.0.M3'
}repositories {
maven {
url 'https://repo.spring.io/libs-milestone'
}
}
デバイスの検知
次の Java ベースの構成を追加して、Spring Web アプリケーションでデバイス検出を有効にします。
@Bean
public DeviceResolverHandlerInterceptor
deviceResolverHandlerInterceptor() {
return new DeviceResolverHandlerInterceptor();
}
@Bean
public DeviceHandlerMethodArgumentResolver
deviceHandlerMethodArgumentResolver() {
return new DeviceHandlerMethodArgumentResolver();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(deviceResolverHandlerInterceptor());
}
@Override
public void addArgumentResolvers(
List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(deviceHandlerMethodArgumentResolver());
}
Device
をコントローラーに挿入します。
@Controller
public class HomeController {
private static final Logger logger =
LoggerFactory.getLogger(HomeController.class);
@RequestMapping("/")
public void home(Device device) {
if (device.isMobile()) {
logger.info("Hello mobile user!");
} else if (device.isTablet()) {
logger.info("Hello tablet user!");
} else {
logger.info("Hello desktop user!");
}
}
}
サイトの好み
次の Java ベースの構成を追加して、Spring Web アプリケーションでサイト設定管理を有効にします。
@Bean
public DeviceResolverHandlerInterceptor
deviceResolverHandlerInterceptor() {
return new DeviceResolverHandlerInterceptor();
}
@Bean
public SitePreferenceHandlerInterceptor
sitePreferenceHandlerInterceptor() {
return new SitePreferenceHandlerInterceptor();
}
@Bean
public SitePreferenceHandlerMethodArgumentResolver
sitePreferenceHandlerMethodArgumentResolver() {
return new SitePreferenceHandlerMethodArgumentResolver();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(deviceResolverHandlerInterceptor());
registry.addInterceptor(sitePreferenceHandlerInterceptor());
}
@Override
public void addArgumentResolvers(
List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(sitePreferenceHandlerMethodArgumentResolver());
}
SitePreference
をコントローラーに挿入します。
@Controller
public class HomeController {
private static final Logger logger =
LoggerFactory.getLogger(HomeController.class);
@RequestMapping("/")
public String home(SitePreference sitePreference, Model model) {
if (sitePreference == SitePreference.NORMAL) {
logger.info("Site preference is normal");
return "home";
} else if (sitePreference == SitePreference.MOBILE) {
logger.info("Site preference is mobile");
return "home-mobile";
} else if (sitePreference == SitePreference.TABLET) {
logger.info("Site preference is tablet");
return "home-tablet";
} else {
logger.info("no site preference");
return "home";
}
}
}
デバイス対応のビューリゾルバー
Spring Web アプリケーションでデバイス対応ビューを有効にするには、次の Java ベースの構成を追加します。これは、Spring Mobile が /WEB-INF/views/mobile/
でモバイルビューを、/WEB-INF/views/tablet/
でタブレットビューを探すことを指定します。
@Bean
public LiteDeviceDelegatingViewResolver liteDeviceAwareViewResolver() {
InternalResourceViewResolver delegate =
new InternalResourceViewResolver();
delegate.setPrefix("/WEB-INF/views/");
delegate.setSuffix(".jsp");
LiteDeviceDelegatingViewResolver resolver =
new LiteDeviceDelegatingViewResolver(delegate);
resolver.setMobilePrefix("mobile/");
resolver.setTabletPrefix("tablet/");
return resolver;
}
ドキュメント
2.0.0.M3 PRE CURRENT | リファレンスドキュメント (英語) | API ドキュメント (英語) |
2.0.0.BUILD-SNAPSHOT SNAPSHOT | リファレンスドキュメント (英語) | API ドキュメント (英語) |