Sobes.tech
Junior

Qual é a diferença entre as anotações @Service, @Repository e @Controller no Spring?

sobes.tech IA

Resposta da IA

Estas são anotações do Spring usadas para marcar classes como componentes de certos camadas da aplicação:

  • @Service: Usada para classes que representam lógica de negócio. Normalmente contém métodos que processam dados obtidos da camada de repositório.
  • @Repository: Usada para classes que interagem com a camada de armazenamento de dados (por exemplo, banco de dados). Fornece métodos para acessar os dados.
  • @Controller: Usada para classes que lidam com requisições HTTP entrantes. Normalmente contém métodos que retornam uma visualização ou dados em resposta à requisição.

Todas essas anotações são estereótipos que estendem @Component, permitindo que o Spring detecte e registre automaticamente essas classes como beans no contexto da aplicação. Sua principal diferença é semântica, indicando o papel da classe na arquitetura. O Spring pode usar essas anotações para aplicar funções específicas às camadas, por exemplo:

  • Spring Data JPA escaneia automaticamente as classes com @Repository para criar implementações de repositórios.
  • Spring MVC usa @Controller para mapear requisições URL para métodos do controlador.