Spring Boot - Embedded Servers
Olá, neste post vou mostrar como configurar uma aplicação Spring Boot para ser utilizada com diversos servidores de aplicação.
Introdução
O Spring Boot suporta nativamente os servidores de aplicação Tomcat, Jetty e Undertown. Neste tutorial vamos criar um projeto onde poderemos escolher qual servidor será utilizado.
Criando o projeto
Abrir o Spring Tool Suite
Criar um projeto 'Spring Starter Project' utilizando os seguintes dados:
Name: spring-boot-embeddedservers Type: Maven Project Packaging: jar Java Version: 17 Language: Java Group: com.ctseducare Artifact: embeddedservers Version: 1.0.0-SNAPSHOT
Adicionar as seguintes dependencias:
- Spring Web
Criar o pacote 'com.ctseducare.embeddedservers.controller'
Criar a classe 'EmbeddedServerController' com o conteúdo abaixo
@RestController public class EmbeddedServerController { @GetMapping("/") String status() { return "I am up!"; } }
Testando a aplicação
- Iniciar a aplicação
- Acessar a aplicação pela URL: http://localhost:8080
Substituindo o Tomcat pelo Jetty
Remover a dependência do Tomcat do starter Web
... <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> <exclusions> <exclusion> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-tomcat</artifactid> </exclusion> </exclusions> </dependency> ...
Adicionar a dependência do Jetty
... <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-jetty</artifactid> </dependency> ...
Testando a aplicação
- Iniciar a aplicação
- Acessar a aplicação pela URL: http://localhost:8080
Gerenciando mútiplos servidores
Remover a dependência 'spring-boot-starter-web'
Criar um profile para o Tomcat
... <profiles> <!--TOMCAT--> <profile> <id>tomcat</id> <build> <finalname>SpringBootTomcat</finalname> </build> <activation> <activebydefault>true</activebydefault> </activation> <dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> </dependencies> </profile> </profiles> ...
Criar um profile para o Jetty
... <!--JETTY--> <profile> <id>jetty</id> <build> <finalname>SpringBootJetty</finalname> </build> <dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> <exclusions> <exclusion> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-tomcat</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-jetty</artifactid> </dependency> </dependencies> </profile> ...
Criar um profile para o Undertown
... <!--UNDERTOW--> <profile> <id>undertow</id> <build> <finalname>SpringBootUndertow</finalname> </build> <dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> <exclusions> <exclusion> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-tomcat</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-undertow</artifactid> </dependency> </dependencies> </profile> ...
Criando launchers
Selecionar o menu Run > Run configurations...
Selecionar o item 'Maven Build', botão direito selecionar 'New Configuration'
- Definindo um launcher para empacotar a aplicação - Preencher os campos abaixo: Name: spring-boot-embeddedservers-tomcat-PACK Base directory: ${workspace_loc:/spring-boot-embeddedservers} Goals: package profile: tomcat - Definindo um launcher para executar a aplicação - Preencher os campos abaixo: Name: spring-boot-embeddedservers-tomcat-RUN Base directory: ${workspace_loc:/spring-boot-embeddedservers} Goals: spring-boot:run profile: tomcat
Executando pelo Maven
- mvn -P tomcat spring-boot:run
- mvn -P jetty spring-boot:run
- mvn -P undertow spring-boot:run
Finalizando
Espero que tenha gostado e que este post possa ser, de alguma forma, útil nas suas pesquisas e estudos.
Um grande abraço e até o próximo post.
Comentários
Postar um comentário