Spring @Component es una de las anotaciones fundamentales de Spring Framework a la hora de dar de alta los distintos beans con su motor de inyección de dependencia. ¿Para que sirve la anotación de @Component?.
Spring @Component
A nivel de Spring Framework esta anotación simplemente registra un bean dentro del framework sin mayor efecto . Es decir si disponemos de una clase como la siguiente:
@Component public class MiComponente { }
Spring la registrará dentro del framework y podremos hacer uso de ella sin problema.
Spring y Jerarquías
Ahora bien esta anotación es la anotación padre de todas las anotaciones especificas que el framework soporta a nivel de inyección de dependencia como son @Service @Repository y @Controller
@Repository : Esta anotación registra un componente a nivel del motor de inyección de dependencia y realiza la traducción automática de las excepciones que se produzcan de acceso a datos a la hora de que la clase acceda a cualquier repositorio de información:
@Repository class PersonaRepository { }
@Service : Es la anotación que más se parece a @Component ya que se encarga de registrar el Componente y permitir que se inyecten otras clases a él . Habitualmente un Servicio se relaciona con varios repositorios por composición:
@Service class Servicio { @Autowired PersonaRepository repositorioPersona; @Autowired FacturaRepository repositorioFactura; }
Recordemos que la anotación @Autowired sirve para ligar los diferentes componentes entre ellos
@Controller : Esta anotación sirve para registrar los controladores que son los encargados de enlazarnos con la capa de presentación en el modelo MVC y de registrar las diferentes URLS a las que el componente responde a través de los diferentes @RequestMappings.
@RestController : En el caso de la anotación de @Controler existen otra anotación más especializada que es la de @RestController en el caso de que deseemos publicar servicios REST.