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

Postagens mais visitadas deste blog

Power bank

Ferramentas para Eletrônica

Investimentos - Renda fixa