@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.

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Spring Framework - TUTORIAL

Última atualização em: | 17541 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.


Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!