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.baeldung.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.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:
<context:component-scan base-package="com.baeldung.controller" /> <mvc:annotation-driven />
Мы можем заменить этот XML-файл классом WebConfig выше.
Чтобы запустить приложение, мы можем использовать класс Initializer, который загружает конфигурацию XML или файл web.xml.
5. Вывод
В этой статье мы рассмотрели два популярных решения для начальной загрузки веб-приложения Spring: одно с использованием веб-стартера Spring Boot, а другое с использованием основной библиотеки spring-webmvc.
В следующей статье о REST с Spring я расскажу о настройке MVC в проекте, настройке кодов состояния HTTP, маршаллинге полезной нагрузки и согласовании содержимого.
Как всегда, код, представленный в этой статье, доступен на Github . Это проект на основе Maven, поэтому его легко импортировать и запускать как есть.