Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Arquitetura em Três Camadas | Fundamentos do Spring Boot
Spring Boot Backend

bookArquitetura em Três Camadas

Isso é feito para separar lógicas específicas em diferentes classes/pacotes, ao invés de escrever tudo em uma única classe.

A ordem em que uma requisição é processada é ControllerServiceRepository. Após isso, a resposta é retornada na ordem inversa: Repository -> Service -> Controller. Iniciaremos a implementação pela camada Repository.

Nível Repository

Esta é a camada mais baixa, onde recebemos dados processados da camada Service e armazenamos no banco de dados.

Essas classes são marcadas com a anotação @Repository para serem adicionadas ao contexto do Spring.

Main.java

Main.java

copy
1234
@Repository public class RepositoryLevel { // connect DB }

Exemplo de Uso do Repositório

Nível de Serviço

É aqui que ocorre a lógica central da aplicação. Nos serviços, processamos ou modificamos dados antes de repassá-los para a camada de repositório.

Para serviços, utilizamos a anotação @Service, que declara a classe como um service que contém a lógica de negócio.

Main.java

Main.java

copy
1234567
@Service public class ServiceLevel { public void logic() { //TODO: write business logic } }

Exemplo de Uso do Serviço

Nível do Controller

Esta camada gerencia a interação inicial entre o cliente e o servidor. Todas as requisições enviadas pelo cliente chegam aqui, sendo responsável por receber os dados fornecidos pelo cliente.

Processa as requisições HTTP recebidas e retorna as respostas HTTP. Os controllers atuam como uma "ponte" entre o cliente e a lógica de negócio.

Neste nível, existem duas anotações utilizadas para designar uma classe como controller:

  • @RestController: Declara uma classe como um REST controller, que gerencia requisições HTTP e retorna dados em formato JSON;

  • @Controller: Declara uma classe como um MVC controller, que gerencia requisições e retorna views (por exemplo, HTML).

Main.java

Main.java

copy
12345678
@Controller public class ControllerLevel { @GetMapping("/root") public String getPage() { return "template"; } }

A anotação @GetMapping especifica a URL para uma determinada requisição. Isso significa que adicionamos o caminho especificado /root ao domínio e, em retorno, recebemos a página correspondente.

Exemplo de Uso do Controller

A Dependência do Thymeleaf no Vídeo

Aqui está o link para a dependência Thymeleaf no repositório Maven.

Mas o que acontece se você não seguir essa abordagem?

Bem, tecnicamente, nada. Mesmo que toda a lógica de negócio seja escrita no controller, conectando ao banco de dados e retornando a resposta ao cliente do mesmo local, tudo funcionará da mesma forma.

No entanto, é improvável que você se lembre do que escreveu ali após algumas semanas, pois toda a lógica da aplicação estará em um único lugar, o que é extremamente inconveniente.

Resumo

A arquitetura em três camadas proporciona uma separação clara de responsabilidades entre as camadas de controllers, services e repositories, tornando o processo de desenvolvimento mais organizado e fácil de manter.

Cada camada concentra-se em sua tarefa específica, o que simplifica tanto o fluxo de trabalho quanto o gerenciamento do projeto.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.45

bookArquitetura em Três Camadas

Deslize para mostrar o menu

Isso é feito para separar lógicas específicas em diferentes classes/pacotes, ao invés de escrever tudo em uma única classe.

A ordem em que uma requisição é processada é ControllerServiceRepository. Após isso, a resposta é retornada na ordem inversa: Repository -> Service -> Controller. Iniciaremos a implementação pela camada Repository.

Nível Repository

Esta é a camada mais baixa, onde recebemos dados processados da camada Service e armazenamos no banco de dados.

Essas classes são marcadas com a anotação @Repository para serem adicionadas ao contexto do Spring.

Main.java

Main.java

copy
1234
@Repository public class RepositoryLevel { // connect DB }

Exemplo de Uso do Repositório

Nível de Serviço

É aqui que ocorre a lógica central da aplicação. Nos serviços, processamos ou modificamos dados antes de repassá-los para a camada de repositório.

Para serviços, utilizamos a anotação @Service, que declara a classe como um service que contém a lógica de negócio.

Main.java

Main.java

copy
1234567
@Service public class ServiceLevel { public void logic() { //TODO: write business logic } }

Exemplo de Uso do Serviço

Nível do Controller

Esta camada gerencia a interação inicial entre o cliente e o servidor. Todas as requisições enviadas pelo cliente chegam aqui, sendo responsável por receber os dados fornecidos pelo cliente.

Processa as requisições HTTP recebidas e retorna as respostas HTTP. Os controllers atuam como uma "ponte" entre o cliente e a lógica de negócio.

Neste nível, existem duas anotações utilizadas para designar uma classe como controller:

  • @RestController: Declara uma classe como um REST controller, que gerencia requisições HTTP e retorna dados em formato JSON;

  • @Controller: Declara uma classe como um MVC controller, que gerencia requisições e retorna views (por exemplo, HTML).

Main.java

Main.java

copy
12345678
@Controller public class ControllerLevel { @GetMapping("/root") public String getPage() { return "template"; } }

A anotação @GetMapping especifica a URL para uma determinada requisição. Isso significa que adicionamos o caminho especificado /root ao domínio e, em retorno, recebemos a página correspondente.

Exemplo de Uso do Controller

A Dependência do Thymeleaf no Vídeo

Aqui está o link para a dependência Thymeleaf no repositório Maven.

Mas o que acontece se você não seguir essa abordagem?

Bem, tecnicamente, nada. Mesmo que toda a lógica de negócio seja escrita no controller, conectando ao banco de dados e retornando a resposta ao cliente do mesmo local, tudo funcionará da mesma forma.

No entanto, é improvável que você se lembre do que escreveu ali após algumas semanas, pois toda a lógica da aplicação estará em um único lugar, o que é extremamente inconveniente.

Resumo

A arquitetura em três camadas proporciona uma separação clara de responsabilidades entre as camadas de controllers, services e repositories, tornando o processo de desenvolvimento mais organizado e fácil de manter.

Cada camada concentra-se em sua tarefa específica, o que simplifica tanto o fluxo de trabalho quanto o gerenciamento do projeto.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 5
some-alt