2010-01-04 12 views
6

Sabemos en Spring, <bean> tiene un atributo "primario" para indicar que un frijol es el primer candidato si hay varios frijoles disponibles para ser autoconectados a una propiedad.No puedo usar anotación para indicar que un frijol es un frijol primario

Pero ahora todas las definiciones de mi bean se declaran utilizando @ Component/@ Service, etc. No encuentro el atributo "primario" correspondiente que puedo usar para declarar un bean.

Por favor, asesorar cómo puedo lograr esto, gracias.

Respuesta

22

En Spring 3.0, usa @Primary.

Indica que un grano se debe dar preferencia cuando varios candidatos están calificados para Autowire un dependencia de un solo valor. Si exactamente existe un bean 'primario' entre los candidatos , será el valor de autoconexión .

Puede usarse en cualquier clase directamente o indirectamente anotado con Component o en métodos anotados con Bean.

El uso de Primario en el nivel de clase tiene sin efecto a menos que se use el escaneo de componentes utilizando . Si se declara una clase de Anotación Primaria a través de XML, se ignoran los metadatos de la anotación Primaria , y se respeta <bean primary="true|false"/> en su lugar .

Ver ref docs.

+0

Gracias He actualizado a Spring 3.0, funciona bien ahora. – Matt

+0

parece que su documento de referencia ha muerto. esto podría ser mejor: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Primary.html –

+0

@jb. gracias, arreglado – skaffman

4

La anotación @Primary solo funcionará si está utilizando Spring 3.0.

En Spring 2.5 no hay una anotación equivalente para el atributo principal. Debes usar la anotación @Qualifier para especificar qué bean quieres inyectar. Otra opción es definir su propia anotación calificante para el mismo propósito.

Consulte el docs para obtener más información.

Cuestiones relacionadas