1. 概要

チュートリアルは、 Springを使用してWebアプリケーションを作成します。

アプリケーションを構築するためのSpring Bootソリューションを検討し、Spring Boot以外のアプローチも確認します。

主にJava構成を使用しますが、同等のXML構成も確認します。

2. SpringBootを使用したセットアップ

2.1. Mavenの依存関係

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

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.6.1</version>
</dependency>

このスターターには次のものが含まれます。

  • SpringWebアプリケーションに必要なspring-webおよびspring-webmvcモジュール
  • サーバーを明示的にインストールせずにWebアプリケーションを直接実行できるTomcatスターター

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

Spring Bootの使用を開始する最も簡単な方法は、メインクラスを作成し、@SpringBootApplicationで注釈を付けることです。

@SpringBootApplication
public class SpringBootRestApplication {

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

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

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

次に、Spring BeanのJavaベースの構成では、構成クラスを作成し、@Configurationアノテーションを付ける必要があります

@Configuration
public class WebConfig {

}

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

@Configuration クラスの主な目的は、SpringIoCコンテナーのBean定義のソースになることです。 詳細については、公式ドキュメントを参照してください。

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

3. spring-webmvcを使用したセットアップ

3.1. Mavenの依存関係

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

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.3</version>
</dependency>

3.2. JavaベースのWeb構成

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

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

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

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

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

3.3. イニシャライザークラス

次に、WebApplicationInitializerインターフェイスを実装するクラスを追加する必要があります:

public class AppInitializer implements WebApplicationInitializer {

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

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

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

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

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

4. XML構成

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

<context:component-scan base-package="com.baeldung.controller" />
<mvc:annotation-driven />

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

アプリケーションを開始するには、XML構成またはweb.xmlファイルをロードするInitializerクラスを使用できます。 これら2つのアプローチの詳細については、以前の記事をご覧ください。

5. 結論

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

Spring を使用したRESTに関する次の記事では、プロジェクトでのMVCのセットアップ、HTTPステータスコードの構成、ペイロードマーシャリング、およびコンテンツネゴシエーションについて説明します。

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