1. 程式人生 > 程式設計 >詳解使用Spring快速建立web應用的兩種方式

詳解使用Spring快速建立web應用的兩種方式

介紹

本篇文章主要介紹,如何使用 Spring 開發一個 Web 應用。
我們將研究用 Spring Boot 開發一個 web 應用,並研究用非 Spring Boot 的方法。
我們將主要使用 Java 配置,但還要了解它們的等效的 XML 配置。

使用 Spring Boot

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-web 和 spring-webmvc 模組
  • Tomcat 容器,這樣我們就可以直接執行 Web 應用程式,而無需安裝 Tomcat

建立一個Spring Boot 應用程式

使用 Spring Boot 的最直接的方法是建立一個主類,並新增 @SpringBootApplication 註解:

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

此單個註釋等效於使用 @Configuration ,@EnableAutoConfiguration 和 @ComponentScan 。

預設情況下,它將掃描本包和它的子包中的所有元件。

接下來,對於基於 Java 的 Spring Bean 配置,我們需要建立一個配置類,並使用 @Configuration 註解:

@Configuration
public class WebConfig {
 
}

該註解是 Spring 主要使用的配置。 它本身使用 @Component 進行元註解,這使註解的類成為標準 bean,因此也成為元件掃描時的候選物件。

讓我們看看使用核心 spring-webmvc 庫的方法。

使用 spring-webmvc

Maven 依賴

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

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

基於 java 的 Web 配置

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

在這裡與 Spring Boot 的方式不同,我們必須顯式定義 @EnableWebMvc 來設定預設的 Spring MVC 配置,而

@ComponentScan 可以指定用於掃描元件的包。

@EnableWebMvc 註解提供了 Spring Web MVC 配置,比如設定 dispatcher servlet、啟用 @Controller 和 @RequestMapping 註解以及設定其他預設值。

@ComponentScan 配置元件掃描指令,指定要掃描的包。

初始化類

接下來,我們需要新增一個實現 WebApplicationInitializer 介面的類:

public class AppInitializer implements WebApplicationInitializer {
 
  @Override
  public void onStartup(ServletContext container) throws ServletException {
    AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
    context.scan("com.qulingfeng");
    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 檔案。

XML配置

讓我們快速看一下等效的XML web配置:

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

我們可以用上面的 WebConfig 類替換這個 XML 檔案。
要啟動應用程式,我們可以使用一個初始化器類來載入 XML 配置或 web.xml 檔案。

結束語

在篇文章中,我們研究了兩種用於開發 Spring Web 應用程式的流行方式,一種使用 Spring Boot Web 啟動程式,另一種使用核心 spring-webmvc 庫。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。