Forem

Cover image for Um projeto Spring Boot - P4
Flávia Correia
Flávia Correia

Posted on • Edited on

2

Um projeto Spring Boot - P4

Faala pessoal, tudo bom? Vamos codar um pouco?

Expandindo a pasta raiz do projeto, temos:

estrutura de pastas do projeto

  • O src/main/java é uma estrutura padrão do Maven, nesse caminho é onde o código Java com destino à produção fica.

  • O src/main/resources é onde os arquivos estáticos ficam, como exemplo, aqueles arquivos de configuração.

A PublishingCompany (Editora)

  • Com o botão direito, clique no pacote com.projects.library > New > Class

Edite os seguites campos:

  • Package: com.projects.library.api.controller
  • Name: PublishingCompanyController e clique em Finish.

Para ver se está tudo certo, vamos criar um método que retorna uma string.
primeiro código

  • A linha 6 indica para o Spring que a classe é um componente Spring que trata requisições HTTP e que pode retornar respostas.

  • Alinha 9 é uma anotação que mapeia requisições do verbo Get e toda vez que solicitar no endereço com "/publishing-companies" retorna o "Hello World" do método getPublishingCompanies.


Rodando o projeto e testando a requisição no Postman

Na aba Boot Dashboard, expandindo a seção "local" teremos a library-api[devtools], ela é a que utilizamos para rodar o projeto
rodar o projeto

No Postman, criei uma nova Collection, selecionei o verbo HTTP GET, adicionei a URL:PORT/URI criada no Controller. (no caso localhost:8080/publishing-companies) e dei um Send. O resultado está logo abaixo.

requisição get no Postman


Criando uma Model Publishing Company
Antes de iniciar a construção da Model, vamos configurar o Lombok, uma biblioteca que gera os Getters, Setters, Equals e HashCodes das Models, o que deixa o código mais limpo.

Caso não ache necessário, pode partir para o tópico 6.

  1. Prepare sua IDE por aqui;
  2. Clique com o botão direito sobre o projeto;
  3. Vá para: Spring > Add starters;
  4. Selecione Lombok;
  5. Clique em Next > Selecione pom.xml > Clique em Finish;
  6. Clique com o botão direito sobre o projeto;
  7. Vá para New > Class;
  8. Em package edite: com.projects.library.domain.model;
  9. Em Name adicione: PublishingCompanyModel e clique em Finish;
  10. Adicione os seguintes atributos: class sem lombok

Note que, existem alguns Warnings na classe pela falta de Getters e Setters, para sanar isso, como já falei antes, usaremos o Lombok, então, nas linhas 3 e 4 adiciono:
import lombok.Getter;
import lombok.Setter;

class com lombok

Assim, temos uma classe mais "enxuta" com os métodos necessários.

Caso não tenha optado pelo Lombok, gere os Getters e Setters.


Modificando o Controller de Publishing Companies

modificando o método getPublishingCompanies

  • Na linha 15, modifiquei para que o método retornasse uma lista de Editoras

  • Nas linhas 17 a 29 são criados 2 objetos instanciados do tipo da Model de Editora;

  • Na linha 31, através do método asList da biblioteca Arrays, é retornado uma lista com os objetos.

O resultado é esse aqui:

resultado do get de editora


Gerando um .jar do projeto

  1. botão direito do mouse sobre o projeto
  2. Run As > Maven build... (o 5)
  3. Goals: clean package
  4. Run

O arquivo .jar estará na pasta target
Para rodar no terminal:

  1. abra a parta target no terminal
  2. java -jar nome_projeto-0.0.1-SNAPSHOT.jar

Com isso, podemos rodar o projeto sem precisar abrir a IDE, uma boa pra quando tiver toda a API pronta e quiser testar algum módulo.


Chegamos ao fim de mais uma publicação, você pode acompanhar os posts anteriores aqui:

O link do projeto no GitHub você acessa aqui.

Até mais!

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay