Перейти к основному содержимому

Создание веб-приложения с помощью Spring 5

· 4 мин. чтения

1. Обзор

В этом руководстве показано, как создать веб-приложение с помощью Spring.

Мы рассмотрим решение 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.6.1</version>
</dependency>

Этот стартер включает в себя:

  • spring-web и модуль spring-webmvc , который нам нужен для нашего веб-приложения Spring .
  • стартер Tomcat, чтобы мы могли запускать наше веб-приложение напрямую, без явной установки какого-либо сервера

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.

По умолчанию он будет сканировать все компоненты в том же пакете или ниже.

Далее, для конфигурации Spring bean-компонентов на основе Java нам нужно создать класс конфигурации и аннотировать его аннотацией @Configuration :

@Configuration
public class WebConfig {

}

Эта аннотация является основным артефактом, используемым конфигурацией Spring на основе Java; он сам мета-аннотирован с помощью @Component , что делает аннотированные классы стандартными bean-компонентами и, как таковые, также кандидатами на сканирование компонентов.

Основная цель классов @Configuration — быть источниками определений bean-компонентов для Spring IoC Container. Более подробное описание смотрите в официальной документации .

Давайте также рассмотрим решение, использующее основную библиотеку 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

Далее мы добавим класс конфигурации с аннотацией @Configuration :

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

}

Здесь, в отличие от решения Spring Boot, нам придется явно определить @EnableWebMvc для настройки конфигураций Spring MVC по умолчанию и @ComponentScan для указания пакетов для сканирования компонентов.

Аннотация @EnableWebMvc предоставляет конфигурацию Spring Web MVC, такую как настройка сервлета диспетчера, включение аннотаций @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.foreach");
container.addListener(new ContextLoaderListener(context));

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

Здесь мы создаем контекст Spring, используя класс AnnotationConfigWebApplicationContext , что означает, что мы используем только конфигурацию на основе аннотаций. Затем мы указываем пакеты для сканирования компонентов и классов конфигурации.

Наконец, мы определяем точку входа для веб-приложения — DispatcherServlet.

Этот класс может полностью заменить файл web.xml из версий сервлета <3.0.

4. XML-конфигурация

Давайте также быстро взглянем на эквивалентную веб-конфигурацию XML:

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

Мы можем заменить этот XML-файл классом WebConfig выше.

Чтобы запустить приложение, мы можем использовать класс Initializer, который загружает конфигурацию XML или файл web.xml. Подробнее об этих двух подходах читайте в нашей предыдущей статье .

5. Вывод

В этой статье мы рассмотрели два популярных решения для начальной загрузки веб-приложения Spring: одно с использованием веб-стартера Spring Boot, а другое с использованием основной библиотеки spring-webmvc.

В следующей статье о REST с Spring я расскажу о настройке MVC в проекте, настройке кодов состояния HTTP, маршаллинге полезной нагрузки и согласовании содержимого.

Как всегда, код, представленный в этой статье, доступен на Github . Это проект на основе Maven, поэтому его легко импортировать и запускать как есть.