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
}