Spring 5でWebアプリケーションをブートストラップする
1. 概要
チュートリアルは、Bootstrap a Web Application with Spring.の方法を示しています
アプリケーションをブートストラップするためのSpringBootソリューションを調べ、SpringBoot以外のアプローチも確認します。
主にJava構成を使用しますが、同等のXML構成についても見ていきます。
参考文献:
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.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ベースのプロジェクトであるため、インポートしてそのまま実行するのは簡単です。