Spring5を使用したWebアプリケーションの作成
1. 概要
チュートリアルは、
アプリケーションを構築するための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ベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。