Sobes.tech
Middle

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

sobes.tech IA

Resposta da IA

Estas anotações são anotações estereotipadas para componentes do Spring:

  • @Component: Anotação básica para qualquer componente gerenciado pelo contêiner IoC do Spring. Assume que a classe é um componente geral da aplicação.
  • @Repository: Anotação especial para classes que realizam operações com dados (DAO). O Spring fornece funcionalidades adicionais, como a tradução automática de exceções JDBC para Spring DataAccessException.
  • @Service: Anotação especial para classes que contêm lógica de negócio. Indica que a classe é um serviço ao nível da lógica de negócio.
  • @Controller: Anotação especial para classes usadas como controladores na camada web. Comumente usadas no Spring MVC para lidar com solicitações web entrantes.

Todas essas anotações são meta-anotações para @Component, o que significa que qualquer classe anotada com qualquer uma delas será considerada pelo Spring como um componente. A principal diferença reside na semântica e na funcionalidade especializada que o Spring pode fornecer para cada uma.

// Exemplo de uso de @Component
@Component
public class MyGenericComponent {
    // funcionalidade geral
}

// Exemplo de uso de @Repository
@Repository
public class UserRepository {
    // operações com o banco de dados
}

// Exemplo de uso de @Service
@Service
public class UserService {
    // lógica de negócio
}

// Exemplo de uso de @Controller
@Controller
public class UserController {
    // processamento de requisições web
}