使用Spring 5啓動Web應用程序

1.概述

本教程說明瞭如何使用Spring引導Web應用程序。

我們將研究用於引導應用程序的Spring Boot解決方案,並查看非Spring Boot的方法。

我們將主要使用Java配置,但還要了解它們的等效XML配置。

2.使用Spring Boot引導

2.1。 Maven依賴

首先,我們需要spring-boot-starter-web依賴項:

<dependency>

 <groupId>org.springframework.boot</groupId>

 <artifactId>spring-boot-starter-web</artifactId>

 <version>2.1.1.RELEASE</version>

 </dependency>

該啟動器包括:

  • Spring Web應用程序所需的spring-webspring-webmvc模塊
  • Tomcat入門程序,這樣我們就可以直接運行Web應用程序,而無需顯式安裝任何服務器

2.2。創建一個Spring Boot應用程序

開始使用Spring Boot的最直接方法是創建一個主類,並使用@SpringBootApplication對其進行@SpringBootApplication

@SpringBootApplication

 public class SpringBootRestApplication {



 public static void main(String[] args) {

 SpringApplication.run(SpringBootRestApplication.class, args);

 }

 }

此單個註釋等效於使用@Configuration @EnableAutoConfiguration@ComponentScan. @EnableAutoConfiguration@ComponentScan.

默認情況下,它將掃描同一軟件包或以下軟件包中的所有組件。

接下來,對於基於Java的Spring Bean配置,我們需要創建一個配置類並使用@Configuration批註對其進行批註

@Configuration

 public class WebConfig {



 }

該批註是基於Java的Spring配置使用的主要工件。它本身使用@Component元註釋,這使註釋的類成為標準bean,因此也成為組件掃描的候選對象。

@Configuration類的主要目的是成為Spring IoC容器的bean定義的來源。有關更詳細的描述,請參閱官方文檔

我們還來看看使用核心spring-webmvc庫的解決方案。

3.使用spring-webmvc引導

3.1。 Maven依賴

首先,我們需要spring-webmvc依賴項:

<dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-webmvc</artifactId>

 <version>5.0.0.RELEASE</version>

 </dependency>

3.2。基於Java的Web配置

接下來,我們將添加具有@Configuration批註的配置類:

@Configuration

 @EnableWebMvc

 @ComponentScan(basePackages = "com.baeldung.controller")

 public class WebConfig {



 }

在這裡,與Spring Boot解決方案不同,我們必須顯式定義@EnableWebMvc來設置默認的Spring MVC配置,而@ComponentScan可以指定用於掃描組件的軟件包。

@EnableWebMvc註釋提供Spring Web MVC配置,例如設置調度程序servlet,啟用@Controller@RequestMapping註釋以及設置其他默認值。

@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.

此類可以完全替換<3.0 Servlet版本中的web.xml文件。

4. XML配置

讓我們快速瀏覽一下等效的XML Web配置:

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

 <mvc:annotation-driven />

我們可以用上面的WebConfig類替換這個XML文件。

要啟動該應用程序,我們可以使用一個初始化器類來加載XML配置或一個web.xml文件。有關這兩種方法的更多詳細信息,請查看我們以前的文章。

5.結論

在本文中,我們研究了兩種用於引導Spring Web應用程序的流行解決方案,一種使用Spring Boot Web啟動程序,另一種使用核心spring-webmvc庫。

在關於REST with Spring的下一篇文章中,我將介紹如何在項目中設置MVC,HTTP狀態代碼的配置,有效負載編組和內容協商。

與往常一樣,可以在Github上獲得本文中提供的代碼。這是一個基於Maven的項目,因此應該很容易直接導入和運行。