En la última versión de Springs, podemos autoaumentar un bean usando la anotación como @Autowired
. Esto automatizará el bean usando su tipo (o constructor, si se aplica en él). ¿Hay alguna forma de que pueda utilizar la anotación @Autowired
basada en el nombre del bean que estábamos haciendo sin anotación en el archivo XML de Spring como autowire = "byName"?Autocableante de bean de primavera por nombre usando la anotación
Respuesta
Usted puede usar JSR-250 @Resource
para el autoencendido de bean de nombre propio, a menos que necesite la inyección del constructor o el método de múltiples parámetros en jection
A partir de los documentos:
Si tiene la intención de expresar la inyección de anotación impulsada por su nombre, no utilizan principalmente @Autowired, incluso si es técnicamente capaz de referirse a un nombre de frijol a través @Qualifier valores. En su lugar, use la anotación JSR-250 @Resource, que está semánticamente definida para identificar un componente objetivo específico por su nombre único, con el tipo declarado como irrelevante para el proceso de coincidencia.
Se puede utilizar:
@Autowired
@Qualifier("beanname")
Según el @Qualifier javadoc
Esta anotación se puede utilizar en un campo o parámetro como un partido de clasificación para los granos de candidatos cuando Autowiring
Estaba usando el proxy de nombre de bean que estaba estropeando el autoenvío por su nombre. @Resource no tenía ese problema ya que no le importa el tipo. Así que ahora sé una razón para esta recomendación de los desarrolladores de Spring :-) Solo FYI
Se menciona otra razón más en los documentos de Spring: ... los beans que se definen a sí mismos como una colección o tipo de mapa no se pueden inyectar a través de @Autowired, porque la coincidencia de tipos no es adecuada para ellos. – rwitzel
Si desea definir el nombre del bean con el que se registrarán en el contenedor DI, puede pasar el nombre en la propia anotación, p. @Service ("employeeManager").
A continuación, mediante el siguiente código puede activar Autowire por Nombre
uso@Autowired
@Qualifier("employeeManager")
private EmployeeManagerService employeeManagerService;
Uso @Component ("beanName") en la definición de la clase Java del frijol
Entonces, mientras Autowiring JSR 330
@Inject @Named (Value = "beanname")
- 1. ¿Cómo se define un bean de primavera usando la anotación en lugar de XML?
- 2. Validación de primavera vs validación de Hibernate usando la anotación
- 3. lote de primavera con la anotación
- 4. primavera 3.0.5 no evalúa anotación @Valor de propiedades
- 5. Poblando un bean de primavera usando un campo constructor-arg
- 6. Primavera AOP crea bean extra
- 7. basado en anotación Spring bean validation
- 8. ¿Cómo establecer el nombre del atributo de un bean con ámbito de la sesión de primavera?
- 9. ¿Define un método de destrucción en bean basado en anotación?
- 10. Nombre del bean que rechaza la primavera, no hay rutas URL especificadas
- 11. primavera AOP: Obtención de los parámetros de la anotación pointcut
- 12. primavera inicializar frijol con nombre de host
- 13. @PreAuthorize anotación no funciona seguridad de primavera
- 14. ¿Cómo se configura MappingJacksonHttpMessageConverter utilizando la configuración basada en la anotación de primavera?
- 15. programático Bean Validation (JSR 303) sin anotación
- 16. cableado primavera por tipo es más lento por la magnitud que el cableado por su nombre
- 17. Inyectando propiedades usando Spring & anotación @Value
- 18. configuración del nivel de aislamiento en las transacciones basadas en la anotación de primavera
- 19. Inyección de constructor utilizando la anotación de primavera @El cableado automático no funciona
- 20. Primavera: uso de patrón de generador para crear un bean
- 21. primavera: Anotación equivalente de seguridad: autenticación de administrador y la seguridad:-método de seguridad global
- 22. spring @ Anotación de Transactional
- 23. de primavera: la inyección de constructor de valores primitivos (propiedades) con configuración basada en anotación
- 24. primavera, se trabaja con @Configuration y anotaciones @Bean
- 25. primavera: un bean que recibe una lista de las clases
- 26. cómo sobrescribir los granos de servicios de Primavera por su nombre, utilizando anotaciones única
- 27. ¿Usando algunos granos en la clase Filter bean?
- 28. Reemplace el bean de primavera en un contexto con la versión simulada de otro contexto
- 29. Primavera 3.1: Equivalente no XML de gestión de transacciones accionadas por anotación
- 30. primavera @Valor anotación no usar por defecto cuando la propiedad no está presente
Great find. No fue obvio – ATrubka
¿No debería ser '@ Autowired' en lugar de' @ Autowire'? – user3114157