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>
</dependency>
這個 starter 包含:
- spring-web 和 spring-webmvc 模塊,我們需要用於我們的 Spring Web 應用程序
- 一個 Tomcat starter,以便我們可以在不明確安裝任何服務器的情況下直接運行我們的 Web 應用程序
2.2. 創建 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 配置,我們需要創建一個 config 類並用 @Configuration 標註它:
@Configuration
public class WebConfig {
}
這個標註是基於 Java 的 Spring 配置的主要 Artifact,它本身被 meta-標註了 @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.3.3</version>
</dependency>
3.2. 基於 Java 的 Web 配置
接下來,我們將添加具有 註解的配置類:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.baeldung.controller")
public class WebConfig {
}
這裏,與 Spring Boot 解決方案不同,我們需要顯式定義 以便設置默認的 Spring MVC 配置,以及 指定掃描組件包。
註解提供 Spring Web MVC 配置,例如設置 Dispatcher servlet、啓用 和 註解,以及設置其他默認配置。
配置組件掃描指令,指定要掃描的包。
3.3. 初始化類
接下來,我們需要添加一個實現 接口的類:
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("/");
}
}
這裏,我們使用 類創建 Spring context,這意味着我們僅使用基於註解的配置。然後,我們指定要掃描的包以及配置類。
最後,我們定義了 Web 應用程序的入口點——。
此類可以完全取代 <3.0 Servlet 版本中的 文件。
4. XML 配置
我們還來快速看一下等效的 XML Web 配置:
<context:component-scan base-package="com.baeldung.controller" />
<mvc:annotation-driven />
我們可以用上面的 WebConfig 類替換這個 XML 文件。
要啓動應用程序,我們可以使用一個 Initializer 類來加載 XML 配置或 web.xml 文件。有關這兩種方法的更多詳細信息,請查看我們之前的文章。
5. 結論
在本文中,我們探討了兩種流行的 Spring Web 應用程序的啓動解決方案,一種使用 Spring Boot Web Starter,另一種使用核心 spring-webmvc 庫。
在下一篇文章中關於 REST with Spring 時,我將涵蓋在項目中的 MVC 設置、HTTP 狀態碼配置、負載映射和內容協商。