1. Introducción
En este tutorial rápido, aprenderemos sobre las diferencias entre las anotaciones @Component, @Repository, @Service , en Spring Framework.
2. Anotaciones de primavera
En la mayoría de las aplicaciones típicas, tenemos distintas capas como acceso a datos, presentación, servicio, negocios, etc.
Y, en cada capa, tenemos varios frijoles. En pocas palabras, para detectarlos automáticamente, Spring utiliza anotaciones de escaneo de classpath .
Luego, registra cada bean en ApplicationContext .
Aquí hay una descripción general rápida de algunas de estas anotaciones:
- @Component es un estereotipo genérico para cualquier componente administrado por Spring
- @Service anota clases en la capa de servicio
- @Repository anota clases en la capa de persistencia, que actuará como un repositorio de base de datos
Ya tenemos un artículo extendido sobre estas anotaciones. Así que nos centraremos solo en las diferencias entre ellos.
3. ¿Qué es diferente?
La principal diferencia entre estos estereotipos es que se utilizan para una clasificación diferente. Cuando anotamos una clase para la detección automática, entonces debemos usar el estereotipo respectivo.
Ahora, veámoslos con más detalle.
3.1. @Componente
Podemos usar @Component en la aplicación para marcar los beans como componentes administrados de Spring . Spring solo recoge y registra beans con @Component y no busca @Service y @Repository en general.
Están registrados en ApplicationContext porque ellos mismos están anotados con @Component :
@Component public @interface Service { }
@Component public @interface Repository { }
@Service y @Repository son casos especiales de @Component . Técnicamente son los mismos, pero los usamos para diferentes propósitos.
3.2. @Repositorio
El trabajo de @Repository es detectar excepciones específicas de persistencia y volver a lanzarlas como una de las excepciones unificadas sin marcar de Spring .
Para esta primavera proporciona PersistenceExceptionTranslationPostProcessor , que requiere agregar en el contexto de nuestra aplicación:
Este postprocesador de beans agrega un asesor a cualquier bean que esté anotado con @Repository.
3.3. @Servicio
Marcamos beans con @Service para indicar que tiene la lógica empresarial . Entonces no hay ninguna otra especialidad excepto usarlo en la capa de servicio.
4. Conclusión
En este reportaje, hemos aprendido acerca de las diferencias entre @Component, @Repository, @Service anotaciones . Examinamos cada anotación por separado con las áreas de su uso.
Como conclusión, siempre es una buena idea elegir la anotación según sus convenciones de capa.