spring - que - Autocableante de bean de primavera por su nombre mediante anotación
spring mvc (5)
Estaba usando el proxy de nombre de frijol 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
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 manera de que pueda usar 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" ?
Puede usar JSR-250 @Resource
para el @Resource
de @Resource
por nombre, a menos que necesite la inyección del constructor o la inyección del método de múltiples parámetros.
De los documentos:
Si tiene la intención de expresar una inyección controlada por anotación por su nombre, no use principalmente @Autowired, incluso si es técnicamente capaz de hacer referencia a un nombre de bean a través de los valores de @Qualifier. 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.
Puedes usar:
@Autowired
@Qualifier("beanname")
De acuerdo con @Qualifier javadoc
Esta anotación se puede usar en un campo o parámetro como un calificador para los beans candidatos cuando se realiza el autoenvío
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, por ejemplo, @Service ("employeeManager").
Luego, usando el código a continuación, puedes habilitar la autoenlace por Nombre
@Autowired
@Qualifier("employeeManager")
private EmployeeManagerService employeeManagerService;
Use @Component ("beanname") en la definición de la clase java de su bean
Luego, durante el autoenvío, use JSR 330
@Inject @ Named (Value = "beanname")