Spring 5でWebアプリケーションをブートストラップする

Spring 5でWebアプリケーションをブートストラップする

1. 概要

チュートリアルは、Bootstrap a Web Application with Spring.の方法を示しています

アプリケーションをブートストラップするためのSpringBootソリューションを調べ、SpringBoot以外のアプローチも確認します。

主にJava構成を使用しますが、同等のXML構成についても見ていきます。

参考文献:

Spring Boot Webアプリケーションを構成する

Spring Bootアプリケーションのより便利な設定のいくつか。

SpringからSpring Bootへの移行

SpringからSpring Bootに適切に移行する方法をご覧ください。

2. Spring Bootを使用したブートストラップ

2.1. メーベン依存

まず、spring-boot-starter-webの依存関係が必要です。


    org.springframework.boot
    spring-boot-starter-web
    2.1.1.RELEASE

このスターターには以下が含まれます。

  • Spring Webアプリケーションに必要なspring-webおよびspring-webmvcモジュール

  • サーバーを明示的にインストールせずにWebアプリケーションを直接実行できるようにするTomcatスターター

2.2. Spring Bootアプリケーションの作成

The most straight-forward way to get started using Spring Boot is to create a main class and annotate it with @SpringBootApplication

@SpringBootApplication
public class SpringBootRestApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootRestApplication.class, args);
    }
}

この単一のアノテーションは、@Configuration@EnableAutoConfiguration、および@ComponentScan.を使用するのと同じです。

デフォルトでは、同じパッケージまたはそれ以下のすべてのコンポーネントをスキャンします。

Next, for Java-based configuration of Spring beans, we need to create a config class and annotate it with @Configuration annotation

@Configuration
public class WebConfig {

}

このアノテーションは、JavaベースのSpring構成で使用される主要なアーティファクトです。それ自体が@Componentでメタ注釈が付けられているため、注釈付きクラスが標準Beanになり、コンポーネントスキャンの候補にもなります。

@Configurationクラスの主な目的は、SpringIoCコンテナーのBean定義のソースになることです。 詳細な説明については、official docsを参照してください。

コアspring-webmvcライブラリを使用したソリューションも見てみましょう。

3. spring-webmvcを使用したブートストラップ

3.1. Mavenの依存関係

まず、spring-webmvcの依存関係が必要です。


    org.springframework
    spring-webmvc
    5.0.0.RELEASE

3.2. JavaベースのWeb構成

次に、@Configurationアノテーションを持つ構成クラスを追加します。

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebConfig {

}

ここでは、Spring Bootソリューションとは異なり、デフォルトのSpring MVC構成を設定するための@EnableWebMvcと、コンポーネントをスキャンするパッケージを指定するための@ComponentScanを明示的に定義する必要があります。

@EnableWebMvcアノテーションは、ディスパッチャサーブレットの設定、@Controllerおよび@RequestMappingアノテーションの有効化、その他のデフォルトの設定など、Spring WebMVC構成を提供します。

@ComponentScanは、スキャンするパッケージを指定して、コンポーネントスキャンディレクティブを構成します。

3.3. 初期化クラス

次に、add a class that implements the WebApplicationInitializer interface:する必要があります

public class AppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) throws ServletException {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.scan("com.example");
        container.addListener(new ContextLoaderListener(context));

        ServletRegistration.Dynamic dispatcher =
          container.addServlet("mvc", new DispatcherServlet(context));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");
    }
}

ここでは、AnnotationConfigWebApplicationContextクラスを使用してSpringコンテキストを作成しています。つまり、アノテーションベースの構成のみを使用しています。 次に、コンポーネントと構成クラスをスキャンするパッケージを指定します。

最後に、WebアプリケーションのエントリポイントであるDispatcherServlet.を定義します。

このクラスは、3.0未満のサーブレットバージョンのweb.xmlファイルを完全に置き換えることができます。

4. XML構成

同等のXMLWeb構成についても簡単に見てみましょう。


このXMLファイルを上記のWebConfigクラスに置き換えることができます。

アプリケーションを起動するには、XML構成またはweb.xmlファイルを読み込むInitializerクラスを使用できます。 これら2つのアプローチの詳細については、our previous articleを確認してください。

5. 結論

この記事では、Spring Webアプリケーションをブートストラップするための2つの一般的なソリューションを検討しました。1つはSpring Boot Webスターターを使用し、もう1つはコアのspring-webmvcライブラリを使用します。

the next article on REST with Springでは、プロジェクトでのMVCのセットアップ、HTTPステータスコードの構成、ペイロードマーシャリング、およびコンテンツネゴシエーションについて説明します。

いつものように、この記事で紹介されているコードはover on Githubで利用できます。 これはMavenベースのプロジェクトであるため、インポートしてそのまま実行するのは簡単です。