Inicializar um aplicativo Web com o Spring 5
1. Visão geral
O tutorial ilustra comoBootstrap a Web Application with Spring.
Veremos a solução Spring Boot para inicializar o aplicativo e também veremos uma abordagem não Spring Boot.
Usaremos principalmente a configuração Java, mas também daremos uma olhada em sua configuração XML equivalente.
Leitura adicional:
Tutorial de inicialização do Spring - Bootstrap uma aplicação simples
É assim que você começa a entender o Spring Boot.
Configurar um aplicativo Web de inicialização Spring
Algumas das configurações mais úteis para um aplicativo Spring Boot.
Migrando do Spring para o Spring Boot
Veja como migrar corretamente de uma inicialização Spring para Spring.
2. Bootstrapping usando o Spring Boot
2.1. Dependência do Maven
Primeiro, precisaremos da dependênciaspring-boot-starter-web:
org.springframework.boot
spring-boot-starter-web
2.1.1.RELEASE
Este iniciador inclui:
-
spring-webe o módulospring-webmvc que precisamos para nosso aplicativo da web Spring
-
um iniciador do Tomcat para que possamos executar nosso aplicativo Web diretamente sem instalar explicitamente nenhum servidor
2.2. Criando um aplicativo de inicialização Spring
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);
}
}
Esta única anotação é equivalente a usar@Configuration,@EnableAutoConfiguration e@ComponentScan.
Por padrão, ele varrerá todos os componentes no mesmo pacote ou abaixo.
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 {
}
Essa anotação é o principal artefato usado pela configuração Spring baseada em Java; ele é meta-anotado com@Component, o que torna as classes anotadas beans padrão e, como tal, também candidatos para varredura de componentes.
O objetivo principal das classes@Configuration é ser fontes de definições de bean para o Spring IoC Container. Para uma descrição mais detalhada, consulteofficial docs.
Vamos também dar uma olhada em uma solução usando a biblioteca principalspring-webmvc.
3. Bootstrapping Usando spring-webmvc
3.1. Dependências do Maven
Primeiro, precisamos da dependênciaspring-webmvc:
org.springframework
spring-webmvc
5.0.0.RELEASE
3.2. A configuração da Web baseada em Java
A seguir, adicionaremos a classe de configuração que possui a anotação@Configuration:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebConfig {
}
Aqui, ao contrário da solução Spring Boot, teremos que definir explicitamente@EnableWebMvc para definir as configurações padrão do Spring MVC e@ComponentScan para especificar pacotes para verificar componentes.
A anotação@EnableWebMvc fornece a configuração do Spring Web MVC, como configurar o servlet do dispatcher, habilitar as anotações@Controllere@RequestMapping e definir outros padrões.
@ComponentScan configura a diretiva de varredura de componente, especificando os pacotes a serem examinados.
3.3. A classe inicializador
Em seguida, precisamosadd 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("/");
}
}
Aqui, estamos criando um contexto Spring usando a classeAnnotationConfigWebApplicationContext, o que significa que estamos usando apenas a configuração baseada em anotação. Então, estamos especificando os pacotes a serem verificados em busca de componentes e classes de configuração.
Finalmente, estamos definindo o ponto de entrada para o aplicativo da web - oDispatcherServlet.
Esta classe pode substituir inteiramente o arquivoweb.xml de <3.0 versões de Servlet.
4. Configuração XML
Vamos também dar uma olhada rápida na configuração XML da web equivalente:
Podemos substituir esse arquivo XML pela classeWebConfig acima.
Para iniciar o aplicativo, podemos usar uma classe Initializer que carrega a configuração XML ou um arquivo web.xml. Para obter mais detalhes sobre essas duas abordagens, verifiqueour previous article.
5. Conclusão
Neste artigo, analisamos duas soluções populares para inicializar um aplicativo Web Spring, um usando o iniciador da Web Spring Boot e outro usando a biblioteca principal spring-webmvc.
Emthe next article on REST with Spring, abordo a configuração do MVC no projeto, a configuração dos códigos de status HTTP, o empacotamento de carga útil e a negociação de conteúdo.
Como sempre, o código apresentado neste artigo está disponívelover on Github. Este é um projeto baseado em Maven, portanto, deve ser fácil importar e executar como está.