使用Spring 5创建Web应用程序

2023/05/12

1. 概述

本教程说明了如何使用Spring创建Web应用程序

我们将研究用于构建应用程序的Spring Boot解决方案,并介绍一种非Spring Boot方法。

我们将主要使用Java配置,但也会查看它们等效的XML配置。

延伸阅读

Spring Boot教程-引导一个简单的应用程序

这就是你开始了解Spring Boot的方式。

阅读更多

配置Spring Boot Web应用程序

Spring Boot应用程序的一些更有用的配置。

阅读更多

从Spring迁移到Spring Boot

了解如何正确地从Spring迁移到Spring Boot。

阅读更多

2. 使用Spring Boot进行设置

2.1 Maven依赖

首先,我们需要spring-boot-starter-web依赖:

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

这个启动器包括:

  • 我们的Spring Web应用程序所需的spring-web和spring-webmvc模块
  • 一个Tomcat启动器,这样我们就可以直接运行我们的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配置,我们需要创建一个配置类并使用@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.3.3</version>
</dependency>

3.2 基于Java的Web配置

接下来,我们将添加具有@Configuration注解的配置类:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "cn.tuyucheng.taketoday.controller")
public class WebConfig {
}

在这里,与Spring Boot解决方案不同,我们必须显式定义@EnableWebMvc以设置默认的Spring MVC配置和@ComponentScan以指定要扫描组件的包

@EnableWebMvc注解提供Spring Web MVC配置,例如设置DispatcherServlet、启用@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("cn.tuyucheng.taketoday");
        container.addListener(new ContextLoaderListener(context));

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

在这里,我们使用AnnotationConfigWebApplicationContext类创建一个Spring上下文,这意味着我们仅使用基于注解的配置。然后,我们指定要扫描组件和配置类的包。

最后,我们定义了Web应用程序的入口点–DispatcherServlet。

此类可以完全替换小于Servlet 3.0版本的web.xml文件。

4. XML配置

让我们也快速浏览一下等效的XML Web配置:

<context:component-scan base-package="cn.tuyucheng.taketoday.controller" />
<mvc:annotation-driven />

我们可以用上面的WebConfig类替换这个XML文件。

要启动应用程序,我们可以使用加载XML配置或web.xml文件的AppInitializer类。有关这两种方法的更多详细信息,请查看我们之前的文章

5. 总结

在本文中,我们研究了两种用于引导Spring Web应用程序的流行解决方案,一种使用Spring Boot Web启动器,另一种使用核心spring-webmvc库。

在下一篇关于REST与Spring的文章中,我将介绍在项目中设置MVC、配置HTTP状态代码、有效负载编组和内容协商。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章