閉じる

Spring Mobile

2.0.0.M3

Spring Mobile は、Spring Web サイトにリクエストを行うデバイスのタイプを検出し、そのデバイスに基づいて代替ビューを提供する機能を提供するフレームワークです。すべての Spring プロジェクトと同様に、Spring Mobile の真の力は、どれほど簡単に拡張できるかにあります。

機能

  • モバイルおよびタブレットデバイスのサーバー側検出のためのデバイスリゾルバーの抽象化

  • ユーザーが「通常」、「モバイル」、または「タブレット」のどちらのエクスペリエンスを好むかをユーザーが示すことができるサイト設定管理

  • ユーザーのデバイスとオプションで指定されたサイト設定に基づいて、ユーザーをモバイル、タブレット、または通常の最も適切なサイトに切り替えることができるサイトスイッチャー

  • 特定のデバイスのさまざまなビューを整理および管理するためのデバイス対応ビュー管理

Spring Boot 構成

Spring Mobile を使用するには、次の依存関係をアプリケーションに追加する

Maven
<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>
Gradle
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;
}
Spring Initializr

プロジェクトのクイックスタート

Spring Initializr (英語) を使用してアプリケーションをブートストラップします。

ドキュメント

Spring プロジェクト別に用意されています。プロジェクトの機能を使用する方法と、それを使用して達成できることを詳細に説明しています。
2.0.0.M3 PRE CURRENT リファレンスドキュメント (英語) API ドキュメント (英語)
2.0.0.BUILD-SNAPSHOT SNAPSHOT リファレンスドキュメント (英語) API ドキュメント (英語)