Introdução ao Spring Boot
Neste tópico abordaremos a criação de um web service REST usando os recursos do Spring Boot
IDS-002
Desenvolvimento para Servidores II
Sistemas para Internet
Spring Boot
https://spring.io/projects/spring-boot
Spring Boot é um projeto da Spring IO que tem como principal objetivo alavancar a produtividade
Ambiente de desenvolvimento
Spring Initializr - start.spring.io
Spring Initializr
O Initializr oferece uma forma rápida de trazer todas as dependências que você precisa para uma aplicação e faz várias configurações para você
1
2
3
5
4
IDS-002
Desenvolvimento para Servidores II
Sistemas para Internet
1
2
3
1 - Project
Selecione a ferramenta de build do projeto.
Utilizaremos o Maven
2 - Language
Linguagem de programação
Utilizaremos Java
3 - Spring Boot
Versão do Spring Boot
Utilizaremos sempre a última versão estável (3.3.2)
IDS-002
Desenvolvimento para Servidores II
Sistemas para Internet
4
4 - Project Metadata
Metadados do projeto. Informados ao criar a estrutura do projeto.
Consideraremos
Packing: Jar
Java: Última versão estável (21)
IDS-002
Desenvolvimento para Servidores II
Sistemas para Internet
5
5 - Dependencies
Dependências do projeto. Bibliotecas base e opcionais para definir as tecnologias utilizadas no projeto Spring Boot.
Clique em Add Dependencies
IDS-002
Desenvolvimento para Servidores II
Sistemas para Internet
IDS-002
Desenvolvimento para Servidores II
Sistemas para Internet
5
5 - Dependencies
Spring Web é a dependência básica para uma aplicação Web para a construção de uma API RESTFul.
Clique em GENERATE.
IDS-002
Desenvolvimento para Servidores II
Sistemas para Internet
Build e Gerenciamento de dependências
A automação do build é o processo de automatizar as tarefas necessárias para criar, executar e testar programas. Depois de criar o código-fonte de um programa, deve-se processar e preparar o código-fonte para implantação em ambientes de execução.
Algumas tarefas de automação que são realizadas:
Build e Gerenciamento de dependências
Clicando em explore, veremos o pom.xml, arquivo de build do Maven
Principais elementos do pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.fatecbs</groupId>
<artifactId>helloWorld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>helloWorld</name>
<description>API REST com Spring Boot</description>
<properties>
<java.version>21</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Executando a aplicação no VSCode (1/6)
PS C:\git\fatec> Expand-Archive .\HelloWorld.zip -DestinationPath ./temp
PS C:\git\fatec> Move-Item .\temp\HelloWorld\ -Destination . -Force
PS C:\git\fatec> code .\HelloWorld\ -r
Executando a aplicação no VSCode (1/6)
Executando a aplicação no VSCode (2/6)
Executando a aplicação no VSCode (3/6)
PS C:\git\fatec\HelloWorld> & "c:\git\fatec\HelloWorld\mvnw.cmd" | � spring-boot:run -f "c:\git\fatec\HelloWorld\pom.xml"
PS C:\git\fatec\HelloWorld> ./mvnw spring-boot:run
Executando a aplicação no VSCode (4/6)
A primeira execução fará com que todas as dependências sejam carregadas do repositório Maven remoto para o seu local (Downloading from Central):
Executando a aplicação no VSCode (5/6)
A aplicação será implantada em um servidor Tomcat embutido
Servidor Tomcat embedded (embutido) no Spring, via Spring Boot
Executando a aplicação no VSCode (6/6)
Se você digitar localhost:8080 em um browser, vai obter a página padrão de erro do Spring
Spring Initializr - VSCode
Spring Initializr (1/4)
Spring Initializr (2/4)
Spring Initializr (3/4)
1
2
3
4
5
6
7
8
9
10
Spring Initializr (4/4)
1
2
3
4
5
6
7
8
9
10
Implementação básica (1/4)
*Anotações são metadados (ou DecorativeData, como alguns podem preferir); informações extras sobre o código que está escrito.
HelloworldApplication.java
package com.fatecrl.helloworld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloworldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloworldApplication.class, args);
}
}
Implementação básica (2/4)
Podemos fazer isto em qualquer classe, inclusive na própria classe principal, mas não é uma boa prática.
Implementação básica (3/4)
Crie um pacote �- com.fatecrl.helloworld.controller
Crie uma classe �- HelloWorldController
HelloWorldController.java
package com.fatecrl.helloworld.controller;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@RestController
@RequestMapping("/helloworld")
public class HelloWorldController {
@GetMapping()
public String sayHello(){
return "Hello World!";
}
}
Implementação básica (4/4)
resources/application.properties
spring.application.name=helloworld
server.servlet.contextPath=/api
Versionamento, Git, Github
Versionando a aplicação no Git (1/4)
Versionando a aplicação no Git (2/4)
Versionando a aplicação no Git (3/4)
git init
Initialized empty Git repository in C:/git/fatec/HelloWorld/.git/
git add .
�git commit -m "Versão inicial - HelloWorldSB"
git branch -M main
git remote add origin https://github.com/diegoneri/hello-world-sb.git
git push -u origin main
Versionando a aplicação no Git (4/4)
Obrigado!