Skip to content

didifive/lab-padroes-projeto-java-spring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Explorando Padrões de Projetos na Prática com Java

Digital Innovation One: Labs

Projeto desenvolvido com instruções de Venilton FalvoJr no Labs da Digital Innovation One. Como base foi utilizado o repositório digitalinnovationone/lab-padroes-projeto-spring. Neste Lab foi exposto também padrões de projeto Singleton, Strategy e Facade em Java puro que podem ser conferidos no repositório digitalinnovationone/lab-padroes-projeto-java

Repository language count Made by Didi GitHub last commit License

Java


Para iniciar este projeto, foi utilizado o spring initializr utilizando as opções:

  • Project: Maven Project;
  • Language: Java 11;
  • Spring Boot: 2.6.0;
  • Dependencies: Spring Web, Spring Data JPA, H2 Database e OpenFeign.

Dependência adicionada manualmente no pom.xml: Springdoc OpenAPI UI v1.5.12.


Padrões e conceitos apresentados no Lab:

  • Singleton: Padrão Criacional que permite a criação de uma única instância de uma classe e fornecer um modo para recuperá-la;
  • Strategy: Padrão Comportamental com objetivo de simplificar a variação de algoritmos para a resolução de um mesmo problema;
  • Facade: Padrão Estrutural que visa prover uma interface que reduza a complexidade nas integrações com subsistemas.

A relação entre Padrões de Projetos com Java e o spring framework pode-se ser percebida em:

  • Annotations @Bean e @Autowired como padrão criacional Singleton;
  • Annotations @Service e @Repository como padrão comportamental Strategy;
  • Annotation @RestController como padrão estrutural Facade.

Swagger: http://127.0.0.1:8080/swagger-ui.html

Minimun Payload in POST:

{
  "name": "string",
  "ean": "string",
  "unity": "string",
  "distributors": [
    {
      "name": "string",
      "comments": "string",
      "address": {
        "cep": "stringCepWith8Numbers"
      },
	  "addressNumber": 1
    }
  ]
}

Example:

{
  "name": "Caneta Esferográfica",
  "ean": "0058771387587",
  "unity": "Peça",
  "distributors": [
    {
      "name": "BIC",
      "comments": "Fabricante de canetas",
      "address": {
        "cep": "06447130"
      },
      "addressNumber": 800
    }
  ]
}

Links Interessantes: