- Java RESTful API criada para Bootcamp Java Santander Dio 2024.
- Minhas melhorias na aplicação:
- Tratada todas as exeções.
- Adicionado conexão local com o Postgres.
- ModelMapper para mapear as entidades para DTO.
- Crud completo de User.
- Criado perfis yml "application-test.yml" e "application-dev.yml".
- Link para criação do projeto no Spring Initializr.
- Acesse JSON Editor Online e faça a abstração do JSON do projeto:
{
"name": "Jhonny",
"account": {
"number": "00000-0",
"agency": "00000-0",
"balance": 1350.35,
"limit": 1300.00
},
"features": [
{
"icon": "URL",
"description": "decrição da feature"
}
],
"card": {
"number": "xxxx xxxx xxxx xxxx",
"limit": 1000.00
},
"news": [
{
"icon": "URL",
"description": "decrição da novidade"
}
]
}
- No chatGPT crie os diagramas de classes usando o JSON com o seguinte pronpt:
Gere um diagrama de classes(usando a sintaxe Mermaid) tendo em vista o seguinte JSON que representa um
usuário de um banco. Mantenha uma extrutura simples e fiel ao modelo que vou passar. Além disso mantenha
o nome das classes em inglês:
{
"name": "Jhonny",
"account": {
"number": "00000-0",
"agency": "00000-0",
"balance": 1350.35,
"limit": 1300.00
},
"features": [
{
"icon": "URL",
"description": "decrição da feature"
}
],
"card": {
"number": "xxxx xxxx xxxx xxxx",
"limit": 1000.00
},
"news": [
{
"icon": "URL",
"description": "decrição da novidade"
}
]
}
- Copie o diagrama gerado e cole usando snipped Mermaid(```mermaid):
Diagrama de Classes com Mermaid
classDiagram
class User {
-String name
-Account account
-Feature[] features
-Card card
-News[] news
}
class Account {
-String number
-String agency
-Number balance
-Number limit
}
class Feature {
-String icon
-String description
}
class Card {
-String number
-Number limit
}
class News {
-String icon
-String description
}
User "1" *-- "1" Account
User "1" *-- "N" Feature
User "1" *-- "1" Card
User "1" *-- "N" News
- O Figma foi utilizado para a abstração do domínio desta API, sendo útil na análise e projeto da solução.
- Ao invés de usar o arquivo "aplication.properties" para gerenciar os perfis e configurações do seu projeto você pode usar o arquivo ".yml" conferme exemplo do "application-dev.yml" abaixo:
# Adicionar viriável de ambiente em configuration do IntelliJ= SPRING_PROFILES_ACTIVE=tst
spring:
datasource:
url: jdbc:h2:mem:sbj2024
username: sbj2024
password:
jpa:
show-sql: true
open-in-view: false
hibernate:
ddl-auto: update # validate | update | create | create-drop
properties:
hibernate:
format_sql: true
h2:
console:
enabled: true
path: /h2-console
settings:
trace: false
web-allow-others: false
---------------------------------------------------------------------
# Adicionar viriável de ambiente em configuration do IntelliJ= SPRING_PROFILES_ACTIVE=dev
spring:
datasource:
url: jdbc:postgresql://localhost:5432/dio-database?currentSchema=public
username: postgres
password: 368091
driver-class-name: org.postgresql.Driver
jpa:
show-sql: true
open-in-view: false
hibernate:
ddl-auto: update # validate | update | create | create-drop
properties:
hibernate:
format_sql: true
default_schema: public
-------------------------------------------------------------------
# Adicionar viriável de ambiente em configuration do IntelliJ= SPRING_PROFILES_ACTIVE=prd
spring:
datasource:
url: jdbc:postgresql://${PGHOST}:${PGPORT}/${PGDATABASE}
username: ${PGUSER}
password: ${PGPASSWORD}
jpa:
open-in-view: false
hibernate:
ddl-auto: update
// OpenAPI (Swagger) https://github.com/springdoc/springdoc-openapi
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0'
- Correção de Cors com Swagger: para não ter problemas ao acessar o Swagger em produção para testar sua api adicione a seguinte configuração:
@OpenAPIDefinition(servers = { @Server(url = "/", description = "Default Server URL")}) <------------------------
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}