Skip to content

Java RESTful API criada para Bootcamp Java Santander Dio 2024.

Notifications You must be signed in to change notification settings

NeoJhonn/santander-bootcamp-java-dio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bootcamp Java Santander Dio

  • 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
Loading
  • O Figma foi utilizado para a abstração do domínio desta API, sendo útil na análise e projeto da solução.

Usando arquivo .yml para gerenciar perfis no Spring

  • 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

Adicionando Swagger como dependência no arquivo build.gradle

// 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);
	}
}

About

Java RESTful API criada para Bootcamp Java Santander Dio 2024.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published