Criando seu primeiro projeto Spring Boot 3.
Tags: programming, spring, tutorial, beginners
Published: 2022-06-25 19:01:47

Está mais perto do que nunca do lançamento da versão 3 do framework de desenvolvimento Spring Boot. Sendo assim, decidir escrever esse artigo técnico com o objetivo de demonstrar a criação de um projeto simples utilizando o spring boot. 

A versão 3 do Spring Boot está sendo esperada ansiosamente por muitos desenvolvedores, primeiro por que é o framework mais utilizado na industria de desenvolvimento de software, segundo por que é a versão que dará suporte a versão 17 do Java. 

Para você conseguir finalizar a leitura desse artigo espera-se que você possua o comhecimento básico da linguagem de programação **Java** do sistema de controle de versões distribuído **Git**, do **Github** e do **Maven**. No final o projeto será versionado no GitHub.

- [Java](https://www.java.com/pt-BR/download/help/whatis_java.html): É uma linguagem de programação e plataforma de computação;
- [Git](https://git-scm.com/doc): É um sistema de controle de versão distribuído gratuito e de código aberto projetado para lidar com tudo, desde projetos pequenos a muito grandes, com velocidade e eficiência;
- [Github](https://docs.github.com/pt/get-started): É uma plataforma de hospedagem de código-fonte e arquivos com controle de versão usando o Git;
- [Maven](https://maven.apache.org/what-is-maven.html): É uma ferramenta de gerenciamento e compreensão de projetos de software.

---

### Criando o projeto no Github
Acesse seu Github e escolha no item com a imagem "+" ao lado da sua foto do perfil a opção "New Repository". Preencha os campos conforme a seguinte imagem:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/arqwsjl2i52hpnrtg7za.png)
 
Quando pequeno eu era facinado por insetos, então decide fazer uma [API](https://pt.wikipedia.org/wiki/Interface_de_programa%C3%A7%C3%A3o_de_aplica%C3%A7%C3%B5es) para eu catalogar os insetos existentes.

Depois de criar o projeto você irá fazer o clone dele para seu computador através do seguinte comando:

`git@github.com:[seu-usuario-de-login]/insect-service.git`

Você pode encontrar esse comando no seu projeto conforme demonstrado na imagem:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tfuoallqomkxb9ors2wt.png)

---

### Criando o projeto Spring Boot
O Spring possui uma ferramenta online chamada [Spring Initializr](https://start.spring.io/) que facilita muito a vida do programado ao criar um novo projeto. A imagem abaixo demostra a ferramenta.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r927rytofbau9r83cu03.png)

Segue explicação para cada campo na imagem:

- **Project**: Nesse campo você precisa escolher qual ferramenta de gerenciamento e compressão você vai utilizar. Para esse projeto de exemplo irei utilizar o Maven. Haaa, lembrando quê, o Meven também é um gerenciado de dependências do Java assim como o Gradle;
- **Language**: Selecione a linguagem de programação que você ira utilizar para implementar o projeto. No nosso casa iremos utilizar o Java;
- **Spring Boot**: Selecione a versão do Spring Boot que será utilizado para criar o projeto. O Spring Boot é um framework que torna fácil a criação de aplicações Spring autossuficientes e robustas, possibilitando a sua execução imediata. Para o nosso exemplo iremos utilizar a versão 3.0.0 (SNAPSHOT);
- **Project Metadata**: São as informações do projeto. Nesse campo você irá informar o Grupo, Artefato, Nome, Descricão, Nome do pacote, tipo de empacotamento e a versão do Java; 
- **Dependencies**: Selecione as dependências para o projeto. Como esse é um projeto exemplo muito simples iremos selecionar apenas três dependências, são elas: Spring Boot DevTools, Spring Boot Actuator e Spring Web.

Depois que você preencher os dados do seu projeto, conforme imagem abaixo, selecione a opcão **GENERATE** para criar o projeto. No final será feito o download do projeto como um arquivo compactado para a sua pasta de downloads na sua máquina. 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u8jfd4nfvhv85sp5pcmx.png)

Descompacte o arquivo dentro da pasta do projeto do github que você fez clone anteriormente. O projeto deverá ter a seguinte estrutura de arquivos:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dpuyp1qy79hvv9e1h9lj.png)
 
---

### Criando o primeiro Endpoint
Crie uma classe RestController com um método responsável por responder uma requisição GET, como no exemplo abaixo.

```
package com.bmstech.insectservice;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import static org.springframework.http.HttpStatus.*;

@RestController
@RequestMapping("/insects")
public class InsectController {

    @GetMapping
    public ResponseEntity<String> get(){
        return new ResponseEntity<>("OK", OK);
    }
}
```
A classe acima utiliza a anotação `@RestController` para informar o Spring Boot que ela é um controller rest e também qual o endereço do `endpoint` para acessar os recursos.

Esta classe possui um método com a anotação `@GetMapping` que diz qual método deve ser chamado quando o controller receber uma requisição do tipo **HTTP GET** em seu endereço padrão **/insects**. O método retorna uma resposta HTTP com Status 200 (OK) e o corpo da resposta com o valor "OK".

### Executando o projeto
Execute o comando `mvn clean install` para baixar as dependências do projeto através do maven. Depois execute o comando `mvn spring-boot:run` para executar a sua aplicação. A mensagem que aparece no final **"Tomcat started on port(s): 8080 (http)"** significa que a sua aplicação web já está rodando na porta 8080, como observado na imagem abaixo. 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/exb1rwje7h78teyz5e50.png)

Pronto, com o projeto em execução vamos verificar se o mesmo esta funcionando como esperamos. Abra o browser de sua preferência e e acesse a URL http://localhost:8080/insects/. A imagem abaixo demonstra o resultado após acessar a URL.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mow2s160s04hps7d5g6n.png) 

Pronto, com tudo funcionando ainda falta fazer o commit das nossas alteraćoes e enviar para o nosso repositório remoto do github. Para isso vamos executar os seguintes comando estando dentro da pasta do projeto:

1. `git add .`: Esse comando adiciona os arquivos para o stage;
2. `git commit -am 'Commit initial'`; Faz o commit das suas alterações no seu repositório local;
3. `git push -u origin main`: Esse comando empurra suas alterações do repositorio local para seu repositório remoto **main** no github

---

### Refeências
Spring Boot - https://spring.io/projects/spring-boot
Spring Initializr - https://start.spring.io/

---

E então, chegamos ao fim de mais um artigo técnico. Espero muito que vocês tenham gostado e aprendido um pouco mais sobre o Spring Boot. Sabemos que existem muitos outros artigos parecido com esse, mas tenho criado como uma forma de ajudar o próximo, e ter um registro onde eu possa encontrar com facilidade as informações necessárias para meu dia-a-dia de trabalho. 

Esse projeto está disponivel em https://github.com/angelobms/insect-service e será utilizado para outros artigos técnicos que irei escrever sobre Spring.