mvc - Diferencia entre el uso de id de bean y el nombre en el archivo de configuración de Spring
spring security example (3)
¿Hay alguna diferencia entre usar un atributo de id
y un atributo de name
en un elemento <bean>
en un archivo de configuración de Spring?
Cualquiera de los dos funcionaría. Depende de tus necesidades:
Si su identificador de bean contiene caracteres especiales, por ejemplo ( /viewSummary.html
), no se permitirá como id
bean, ya que no es una identificación XML válida. En tales casos, podría omitir la definición de la id
del frijol y, en su lugar, proporcionar el name
del frijol.
El atributo de name
también ayuda a definir alias
es para su bean, ya que permite especificar múltiples identificadores para un bean determinado.
De la referencia de Spring , 3.2.3.1 Naming Beans :
Cada bean tiene uno o más identificadores (también llamados identificadores o nombres; estos términos se refieren a lo mismo). Estos identificadores deben ser únicos dentro del contenedor en el que se aloja el bean. Un bean casi siempre tendrá solo un id, pero si un bean tiene más de un id, los extra se pueden considerar alias.
Cuando se usan metadatos de configuración basados en XML, se usan los atributos ''id'' o ''name'' para especificar los identificadores de bean. El atributo ''id'' le permite especificar exactamente una identificación, y como es un atributo de identificación de elemento XML real, el analizador XML puede realizar una validación adicional cuando otros elementos hacen referencia a la identificación; como tal, es la forma preferida de especificar una identificación de frijol. Sin embargo, la especificación XML limita los caracteres que son legales en ID XML. Por lo general, esto no es una restricción, pero si necesita utilizar uno de estos caracteres XML especiales o quiere introducir otros alias en el bean, también puede especificar uno o más identificadores de beans, separados por una coma (, ), punto y coma (;) o espacios en blanco en el atributo ''nombre''.
Así que, básicamente, el atributo id
ajusta a los estándares de atributos XML id mientras que el name
es un poco más flexible. En general, uso el name
casi exclusivamente. Simplemente parece más "Spring-y".
Desde Spring 3.1 el atributo id
es una xsd:string
y permite el mismo rango de caracteres que el atributo de name
.
La única diferencia entre una id
y un name
es que un name
puede contener múltiples alias separados por una coma, punto y coma o espacios en blanco, mientras que una id
debe ser un valor único.
De la documentación de Spring 3.2:
En los metadatos de configuración basados en XML, utiliza 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.