2012-04-17 21 views
23

¿Una clase que actuará como un bean en una aplicación de Spring requerirá tanto @Component como @Named al mismo tiempo?Tanto @Component como @Named para la misma clase de bean

¿Cuál es el significado si ambos se usan?

Intenté buscar en la red y vi la documentación estándar de estas anotaciones y las encontré un poco confusas.

Finalmente, ¿qué nombre toma la aplicación si la anotación @Named no especifica ningún nombre para el bean?

Respuesta

44

@Component y @Named son anotaciones que básicamente hacen lo mismo, pero provienen de diferentes API.

@Component pertenece a Spring API. Marca la clase para ser detectado automáticamente como un bean y opcionalmente le permite especificar un nombre para ese bean (@Component("foo")). Sin la especificación de nombre explícitamente detectada, bean obtendrá un nombre predeterminado derivado del nombre de su clase.

@Named pertenece a javax.inject API. Marca que la clase se detecte automáticamente como un bean y requiere que especifiques un nombre.

Spring admite ambas API. No tiene sentido utilizar ambas anotaciones en la misma clase, ya que proporcionan la misma funcionalidad.

Consulte también:

4

resorte soporta @Named anotación (JSR-330) como una alternativa a @Component (primavera).

En general, @Named es mal nombrado ya que no describe lo que hace, por lo que preferiría usar @Component siempre que pueda.

+0

De acuerdo, (a) Nombrado es mal nombrado. Sin embargo, muchas clases son un recurso compartido entre proyectos de diferentes marcos. Usando @Named to bean-ify la clase requiere javax.injection como una dependencia para cada aplicación, mucho mejor que otro framework dependiendo de Spring para la anotación. – Freestyle076

0

Se debe utilizar cualquiera de los dos. Usar tanto @Component como @Named no tiene ningún sentido. Añadiendo al comentario anterior (Otros) @Component ("[algún ID de componente]") y @Named ("[algúnNúmero2]") para asignar un ID a un bean pasando el ID entre paréntesis, si no se le asigna uno implícitamente.

Cuestiones relacionadas