2009-05-17 11 views

Respuesta

113

Desde el Spring reference, 3.2.3.1 Naming Beans:

Cada bean tiene uno o más ID (también llamados identificadores o nombres de estos; términos se refieren a la misma cosa). Estos ID deben ser únicos dentro del contenedor el grano se encuentra alojado en. Un grano casi siempre tendrá un solo identificación, pero si un grano tiene más de un identificación, los extras puede ser esencialmente alias considerados.

Al utilizar basados ​​en XML de configuración metadatos, se utiliza el 'id' o 'nombre' atributos para especificar el identificador (s) de frijol . El atributo 'id' le permite especificar exactamente un identificador, y como es un atributo de ID de elemento XML real , el analizador XML puede hacer alguna validación adicional cuando otros elementos hacen referencia a la identificación; como tal, es la forma preferida de especificar un id de frijol. Sin embargo, la especificación XML limita los caracteres que son legales en ID XML. Esto es por lo general no una restricción, pero si usted tiene una necesidad utilizar uno de estos XML especiales caracteres, o quiere introducir otros alias para el grano, es posible que también o lugar especificar uno o más de frijol ids, separados por una coma (,), punto y coma (;) o espacios en blanco en el atributo 'name' .

Así que básicamente el atributo id se ajusta a las normas atributo ID XML mientras que name es un poco más flexible. En términos generales, uso name casi exclusivamente. Simplemente parece más "Spring-y".

+39

¿Prefiere usar el atributo "nombre" aunque la referencia de Spring que ha citado recomiende usar el atributo "id"? Incluso si prefiere quedarse con "nombre", no puede llamarlo más "Spring-y" si la referencia de Spring sugiere lo contrario :) Esto es quisquilloso, lo sé;) – theadam

39

Cualquiera de los dos funcionaría. Depende de sus necesidades:
Si su identificador de bean contiene caracteres especiales, por ejemplo (/viewSummary.html), no se permitirá como el bean id, porque no es una identificación XML válida. En tales casos, podría omitir la definición del bean id y suministrar el bean name en su lugar.
El atributo name también ayuda a definir alias es para su bean, ya que permite especificar múltiples identificadores para un bean determinado.

+1

Más uno para decirlo con sus propias palabras y dando un ejemplo de por qué se pueden necesitar caracteres especiales. –

+0

Gracias. Lo aprecio. – pugmarx

67

Desde Spring 3.1, el atributo id es xsd:string y permite el mismo rango de caracteres que el atributo name.

La única diferencia entre un id y una name es que un name puede contener varios alias separados por una coma, punto y coma o espacios en blanco, mientras que un id debe ser un valor único.

Desde la primavera 3.2 documentación:

En metadatos de configuración basados ​​en XML, utilice los atributos id y/o name para especificar los identificadores de bean. El atributo id le permite especificar exactamente una identificación. Convencionalmente, estos nombres son alfanuméricos ('myBean', 'fooService', etc.), pero también pueden ser caracteres especiales. Si desea introducir otros alias para el bean, también puede especificarlos en el atributo de nombre, separados por una coma (,), punto y coma (;) o espacio en blanco. Como nota histórica, en las versiones anteriores a Spring 3.1, el atributo id se tipeó como un xsd: ID, que restringía los posibles caracteres. A partir de 3.1, ahora es xsd: string. Tenga en cuenta que la singularidad del id. De frijol sigue siendo impuesta por el contenedor, aunque ya no por los analizadores XML.

Cuestiones relacionadas