Article image

LM

Lucas Mathias28/03/2023 22:49
Compartilhe

Estrutura de um projeto Spring API REST

  • #Spring Boot / Spring Framework
  • #Java

Quando estudamos sobre Spring framework é bem comum construirmos API REST's para consolidar os conceitos do framework, mas como é a estrutura básica de um projeto Spring Web API REST?

  1. Pasta "src/main/java": Contém o código-fonte Java da aplicação.
  2. Pacote "com.example.demo": É o pacote raiz do projeto e contém as classes principais da aplicação.
  3. Classe principal "DemoApplication.java": É a classe principal da aplicação e contém o método main().
  4. Pasta "src/main/resources": Contém os arquivos de configuração e recursos utilizados pela aplicação.
  5. Arquivo "application.properties": É o arquivo de propriedades da aplicação, usado para configurar as propriedades do servidor e da aplicação.
  6. Pasta "src/main/java/com/example/demo/controller": Contém as classes controladoras da aplicação, que são responsáveis por receber e processar as requisições REST.
  7. Pasta "src/main/java/com/example/demo/service": Contém as classes de serviço da aplicação, que são responsáveis por implementar a lógica de negócio da aplicação.
  8. Pasta "src/main/java/com/example/demo/model": Contém as classes de modelo da aplicação, que representam as entidades da aplicação.
  9. Pasta "src/main/java/com/example/demo/repository": Contém as interfaces de repositório da aplicação, que são responsáveis por definir as operações de persistência de dados.
  10. Arquivo "pom.xml": É o arquivo de configuração do Maven, que contém as dependências do projeto e outras configurações.
  11. Pasta "src/test/java": Contém os testes unitários da aplicação.

Essa é uma estrutura básica de um projeto Spring Web API REST, mas pode ser adaptada e estendida de acordo com as necessidades do projeto.

Compartilhe
Comentários (1)
Giovanni Rozza
Giovanni Rozza - 29/03/2023 13:08

vc também pode ter vários aplication properties:

application-dev.properties
application-test.properties
application-prod.properties

Cada um com suas variáveis de configuração, por exemplo no dev vc pode configurar o banco de dados em memória usando o banco de dados H2 (dependência do pom.xml). Na fase de desenvolvimento é bem mais prático usar esse bd.

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>


Como o Spring sabe qual profile usar? Porque no arquivo application.properties vc configura o profile assim:


spring.profiles.active=${APP_PROFILE:test}


Na minha configuração está como uma variável e o default é test. Porque na minha configuração está como uma variável? Porque quando eu subo a aplicação para um cloud, eu defino uma variável de ambiente APP_PROFILE e lá eu atribuo o profile prod.


No diretório src/main/resources vc também pode configurar salvar um script sql, se vc chamar o script como import.sql o Spring na hora de estanciar o banco de dados vai chamar este script para popular o banco. Eu utilizo este script ao invés de ficar populando os dados via criação de objetos dentro do programa.