@Component, @Repository e @Service em Spring
Este é um tutorial rápido para entender as diferenças entre as anotações @Component, @Repository e @Service no Spring Framework.
Última atualização em: | 17397 Visualizações
Anotações do Spring Framework
Em aplicações é comum termos camadas distintas, como acesso a dados, serviço, negócios.
Em cada camada podem existir vários beans. Para detectá-los automaticamente, o Spring usa anotações de verificação e em seguida, registra cada bean no ApplicationContext.
Vamos entender um pouco sobre estas anotações:
@Component
: é um estereótipo genérico para qualquer componente gerenciado pelo Spring;@Service
faz anotações de classes na camada de serviço;@Repository
anota classes na camada de persistência, que atuará como um repositório de banco de dados;
Diferenças entre @Component, @Service e @Repository
A principal diferença entre esses estereótipos é que eles são usados para diferentes classificações.
Quando anotamos uma classe para detecção automática, devemos usar o respectivo estereótipo.
@Componente
Podemos usar o @Component
no aplicativo para marcar os beans como componentes gerenciados do Spring. O Spring apenas registra beans com @Component
sem procurar por @Service
e @Repository
os quais são registrados no ApplicationContext porque são anotados com @Component
, veja:
// [...]
@Componente
public @interface Service {
// [...]
}
// [...]
@Componente
public @interface Repository{
// [...]
}
@Service
e@Repository
são componentes especíais de@Component
. Tecnicamente são iguais, mas utilizados para diferentes casos.
@Repositório
O @Repository
tem como objetivo criar beans para a parte de persistência, além de capturar exceções específicas de persistência e repeti-las novamente como uma das exceções não verificadas e unificadas do Spring.
@Service
Marcamos beans com @Service
para indicar que ele está mantendo a lógica de negócios. Não há outra especialidade, além do uso na camada de serviço.
Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.