Загрузите веб-приложение с помощью Spring 5

Загрузите веб-приложение с помощью Spring 5

1. обзор

В руководстве показано, какBootstrap a Web Application with Spring.

Мы рассмотрим решение Spring Boot для начальной загрузки приложения, а также рассмотрим подход, отличный от Spring Boot.

В основном мы будем использовать конфигурацию Java, но также рассмотрим их эквивалентную конфигурацию XML.

Дальнейшее чтение:

Spring Boot Tutorial - Начальная загрузка простого приложения

Вот как вы начинаете понимать Spring Boot.

Read more

Настройте веб-приложение Spring Boot

Некоторые из наиболее полезных конфигов для приложения Spring Boot.

Read more

Миграция из весны в весеннюю загрузку

Посмотрите, как правильно перейти с Spring на Spring Boot.

Read more

2. Самозагрузка с помощью Spring Boot

2.1. Maven Dependency

Для начала нам понадобится зависимостьspring-boot-starter-web:


    org.springframework.boot
    spring-boot-starter-web
    2.1.1.RELEASE

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

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

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

2.2. Создание приложения Spring Boot

The most straight-forward way to get started using Spring Boot is to create a main class and annotate it with @SpringBootApplication:

@SpringBootApplication
public class SpringBootRestApplication {

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

Эта единственная аннотация эквивалентна использованию@Configuration,@EnableAutoConfiguration и@ComponentScan.

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

Next, for Java-based configuration of Spring beans, we need to create a config class and annotate it with @Configuration annotation:

@Configuration
public class WebConfig {

}

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

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

Давайте также рассмотрим решение с использованием библиотеки corespring-webmvc.

3. Самозагрузка с использованием spring-webmvc

3.1. Maven Зависимости

Во-первых, нам нужна зависимостьspring-webmvc:


    org.springframework
    spring-webmvc
    5.0.0.RELEASE

3.2. Веб-конфигурация на основе Java

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

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

}

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

Аннотация@EnableWebMvc предоставляет конфигурацию Spring Web MVC, такую ​​как настройка сервлета диспетчера, включение аннотаций@Controller и@RequestMapping и установка других значений по умолчанию.

@ComponentScan настраивает директиву сканирования компонентов, указывая пакеты для сканирования.

3.3. Класс инициализатора

Далее нам нужноadd a class that implements the WebApplicationInitializer interface:

public class AppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) throws ServletException {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.scan("com.example");
        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:


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

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

5. Заключение

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

Вthe next article on REST with Spring я расскажу о настройке MVC в проекте, настройке кодов состояния HTTP, маршалинге полезной нагрузки и согласовании содержимого.

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