Spring Boot

 O Spring Boot veio para facilitar na criação de aplicações web usando o Spring Framework, porém substituindo diversos arquivos de configurações presentes no Spring Framework por convenções. 

 As configurações necessárias (bem reduzidas), devem ser inseridas em um arquivo application.properties.

 Outra diferença é que ele já trás um Servlet Container integrado, como o Tomcat ou o Jetty.


Spring Initializer

 Podemos criar rapidamente uma aplicação Spring Boot usando o Spring Initializer:



Campos:
  • Group: identifica a empresa ou o grupo responsável (geralmente: com.nome-da-empresa)
  • Artifact: identificador do projeto (letras são separadas com traços: nome-da-aplicação)
  • Name: nome do projeto (pode ser escrito normalmente: Nome Da Aplicação)
  • Description: descrição do projeto
  • Package name: junção do group e do artifact (com.nome-da-empresa.nome-da-aplicação)
  • Packaging: como o projeto será encapsulado
  • Java: versão do Java
  • Dependencies: dependências do projeto (serão inseridas no pom.xml)

@SpringBootApplication

 O Spring Boot busca a classe anotada com @SpringBootApplication para saber por onde inicializar o container da aplicação.

application.properties

 As configurações da aplicação devem ser inseridas no arquivo application.properties.

Dispatcher Servlet

 O Dispatcher Servlet é o componente do Spring que é responsável por receber as requisições e enviá-las para o controller mapeado para recebê-la (de acordo com a URL).

Principais anotações

  • @Controller: informa que aquela classe possui métodos que irão lidar com requisições;
  • @ResponseBody: o retorno do método é o corpo da mensagem (e não uma view que deve ser verificada pelo Spring)
  • @RestController: combinação das anotações @Controller e @ResponseBody
  • @RequestBody: define que o objeto anotado deve ser preenchido com os dados enviados no corpo da requisição
  • @RequestMapping: caminho (ou parte dele) que será tratado pelo método. Se utilizado na classe, define a base da URL que será considerada por todos os métodos daquela classe
  • @GetMapping: @RequestMapping, porém só para o método GET. Possui variações para os outros métodos HTTP, como @PostMapping, @PutMapping, etc.
  • @Service: define que aquela classe é uma classe de serviço
  • @Autowired: solicita que o Spring faça a injeção de dependência no atributo especificado
  • @CrossOrigin(origins="*", maxAge=3600): define propriedades de CORS necessárias para que a aplicação se comunique com fontes externas

ResponseEntity<Object>

A classe ResponseEntity é uma classe útil do Spring que permite responder uma requisição retornando o status e o corpo facilmente:

return ResponseEntity.status(HttpStatus.OK).body(objectCreated);

Variável na URL

 É comum em alguns endpoints que a URL contenha o identificador de um elemento, como quando queremos buscar informações de somente aquele elemento, ou quando queremos atualizá-lo. Para isso, definimos na anotação de mapeamento do path a variável inserindo-a entre chaves (ex: {id}).
 Para acessar esse valor, recebemos como parâmetro com o tipo correto, anotando o parâmetro com @PathVariable(value="nome-do-parametro").
 Ex:

@GetMapping("/{id}")
public ResponseEntity<Object> getById(@PathVariable(value="id") Integer id) { ... }

BeanUtils

 A classe BeanUtils possui diversos métodos úteis para lidar com Beans. Um particularmente útil é o copyProperties(dto, obj). Como o próprio nome diz, ele copia os valores das propriedades em comum do dto para o obj.

@Configuration

 Podemos criar classes de configuração para adaptarmos a aplicação Spring conforme nossa necessidade. Uma necessidade comum é ajustar a forma como as datas são exibidas.
 Classes de configuração devem ser anotadas com @Configuration. Os métodos dessa classe devem ser anotadas com @Bean.

Comentários

Postagens mais visitadas deste blog

Thymeleaf