Рубрики
Без рубрики

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

Загрузка веб-приложения с конфигурацией на основе Spring 4 и Java. Обсуждение переноса конфигурации Spring с XML на Java, начиная с web.xml.

Автор оригинала: Eugen Paraschiv.

1. Обзор

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

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

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

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

Spring Boot Tutorial – Bootstrap простое приложение

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

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

2. Загрузка С Помощью Пружинной Загрузки

2.1. Зависимость Maven

Во-первых, нам понадобится spring-boot-starter-web зависимость:


    org.springframework.boot
    spring-boot-starter-web
    2.4.0

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

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

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 beans на основе Java нам нужно создать класс конфигурации и аннотировать его с помощью @Configuration annotation :

@Configuration
public class WebConfig {

}

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

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

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

3. Загрузка с помощью spring-webmvc

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

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


    org.springframework
    spring-webmvc
    5.3.3

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

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

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.baeldung.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("com.baeldung");
        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 выше.

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

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

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

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

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