[vc_row][vc_column][vc_column_text]Aprenda como utilizar @Autowired en Spring para que el framework inserte automáticamente dependencias en las aplicaciones Java.[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]@Autowired se utiliza mucho en Spring para inyectar dependencias. Al confiar el framework Spring en sí mismo para inyectar dependencias (por ejemplo, la interface de repositorios), el programador puede estar seguro y enfocarse en la lógica principal de la aplicación.
También podemos utilizar @Autowired para inicializar colecciones de Java que usan genéricos. Digamos que tenemos una interface que podría implementarse mediante un número determinado de clases. Podemos registrar cada una de estas clases en Spring Context con la anotación @Context. En forma opcional, también podemos nombrar el componente usando @Component ($name). Esto se vuelve particularmente útil si queremos asociar cada contexto con una palabra clave. El uso de un nombre de componente también nos permite calificar el bean requerido cada vez que Spring intenta auto conectarse usando Qualifier ($beanName). Un caso de uso podría ser que la palabra clave es el nombre del campo JSON y la clase correspondiente es la clase de utilidad para operar en el modelo asociado con ese JSON.
Interface de muestra:
1 2 3 | interface GenericUpdater{ public boolean act(); } |
Podría haber un número n de implementaciones:
1 2 3 4 5 6 7 8 | @Component("inventory") public InventoryUpdater implements GenericUpdater{ @Overrides public boolean act() { //do some stuff return true; } } |
Ahora podemos realizar el @Autowire de una colección, digamos un mapa que almacena cada uno de estos «implementadores» con un nombre de contexto:
1 2 3 | @Autowired //Some Generic Collection Map<String,GenericUpdater> updaterMap; |
Spring ahora escanea todas las implementaciones de «GenericUpdater» y las inyecta en este mapa con el nombre dado en @Component($name). Aquí podemos ver la importancia de nombrar los beans. Dado que cada implementación de GenericUpdater tiene un nombre personalizado definido, no hay ambigüedad mientras tratamos de obtener los beans.
Este artículo se encuentra basado en Autowiring generics in Spring.[/vc_column_text][/vc_column][/vc_row]