https://github.com/didifive/lab-padroes-projeto-java-spring
dio Labs - Padrões de Projeto Java com Spring
https://github.com/didifive/lab-padroes-projeto-java-spring
design-patterns dio java labs spring spring-boot
Last synced: 3 months ago
JSON representation
dio Labs - Padrões de Projeto Java com Spring
- Host: GitHub
- URL: https://github.com/didifive/lab-padroes-projeto-java-spring
- Owner: didifive
- Created: 2021-11-26T02:43:04.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-12-02T02:42:20.000Z (over 4 years ago)
- Last Synced: 2025-04-28T17:45:12.300Z (about 1 year ago)
- Topics: design-patterns, dio, java, labs, spring, spring-boot
- Language: Java
- Homepage: https://lab-padroes-projeto-java-sprin.herokuapp.com/swagger-ui.html
- Size: 67.4 KB
- Stars: 6
- Watchers: 1
- Forks: 11
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Explorando Padrões de Projetos na Prática com Java
## Digital Innovation One: Labs
Projeto desenvolvido com instruções de [Venilton FalvoJr](https://github.com/falvojr) no Labs da [Digital Innovation One](https://www.dio.me/). Como base foi utilizado o repositório [digitalinnovationone/lab-padroes-projeto-spring](https://github.com/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](https://github.com/digitalinnovationone/lab-padroes-projeto-java)
Para iniciar este projeto, foi utilizado o [spring initializr](https://start.spring.io/) 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](https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-ui/1.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:
```JSON
{
"name": "string",
"ean": "string",
"unity": "string",
"distributors": [
{
"name": "string",
"comments": "string",
"address": {
"cep": "stringCepWith8Numbers"
},
"addressNumber": 1
}
]
}
```
Example:
```JSON
{
"name": "Caneta Esferográfica",
"ean": "0058771387587",
"unity": "Peça",
"distributors": [
{
"name": "BIC",
"comments": "Fabricante de canetas",
"address": {
"cep": "06447130"
},
"addressNumber": 800
}
]
}
```
Links Interessantes:
* IDE: [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/);
* [jsonschema2pojo.org](https://www.jsonschema2pojo.org);
* [ViaCEP](https://viacep.com.br);
* [Entendendo os conceitos dos Padrões de Projetos em Java - Devmedia](https://www.devmedia.com.br/entendendo-os-conceitos-dos-padroes-de-projetos-em-java/29083).