¿Hay alguna diferencia entre usar un id
atributo y un name
atributo en un <bean>
elemento en un archivo de configuración de Spring?
spring
configuration
Duncan Jones
fuente
fuente
Respuestas:
De la referencia de Spring , 3.2.3.1 Naming Beans :
Entonces, básicamente, el
id
atributo se ajusta a los estándares de atributos de id XML, mientras quename
es un poco más flexible. En general, usoname
casi exclusivamente. Simplemente parece más "Spring-y".fuente
Desde Spring 3.1, el
id
atributo es anxsd:string
y permite el mismo rango de caracteres que elname
atributo.La única diferencia entre an
id
y aname
es que aname
puede contener múltiples alias separados por una coma, punto y coma o espacios en blanco, mientras que unid
debe ser un valor único.De la documentación de Spring 3.2:
fuente
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 beanid
, porque no es un ID XML válido. En tales casos, puede omitir la definición del beanid
y suministrar el bean en suname
lugar.El
name
atributo también ayuda a definiralias
es para su bean, ya que permite especificar múltiples identificadores para un bean dado.fuente
Existen pocas diferencias menores como, el uso de id arrojará una excepción si no se maneja correctamente.
déjame responder la siguiente pregunta
No hay diferencia. experimentará el mismo efecto cuando se use id o nombre en una etiqueta <bean>.
¿Cómo?
Tanto los atributos de identificación como los de nombre nos brindan un medio para proporcionar un valor de identificador a un bean (por el momento, piense que id significa id pero no identificador). En ambos casos, verá el mismo resultado si llama
applicationContext.getBean("bean-identifier");
.Tome @Bean, el equivalente java de la etiqueta <bean>, no encontrará un atributo de identificación. puede dar su valor de identificador a @Bean solo a través del atributo de nombre.
Permítanme explicarlo a través de un ejemplo:
tome este archivo de configuración, llamémoslo como spring1.xml
Primavera vuelve objeto Foo para,
Foo f = (Foo) context.getBean("foo");
. Reemplaceid="foo"
conname="foo"
en el spring1.xml anterior, aún verá el mismo resultado.Defina su configuración xml como,
Obtendrá BeanDefinitionParsingException. Dirá, el nombre de Bean 'fooIdentifier' ya se usa en este elemento. Por cierto, esta es la misma excepción que verás si tienes debajo config
<bean name = "fooIdentifier" class = "com.intertech.Foo"> </bean>
<bean name = "fooIdentifier" class = "com. intertech.Foo "> </bean>
Si mantiene tanto la identificación como el nombre en la etiqueta del bean, se dice que el bean tiene 2 identificadores. puedes obtener el mismo bean con cualquier identificador. tomar config como
el siguiente código imprime verdadero
fuente
¿Hay alguna diferencia al definir Id & name en ApplicationContext xml? No A partir de 3.1 (spring), id también se define como un xsd: tipo de cadena. Significa que los caracteres permitidos en la definición del nombre también se permiten en Id. Esto no fue posible antes de Spring 3.1.
¿Por qué usar name cuando es lo mismo que Id? Es útil para algunas situaciones, como permitir que cada componente de una aplicación haga referencia a una dependencia común mediante el uso de un nombre de bean que sea específico para ese componente en sí.
fuente
Ambos
id
yname
son identificadores de beans en el contenedor Spring IOC / ApplicationContecxt. Elid
atributo le permite especificar exactamente una identificación, pero al usar elname
atributo puede darle un nombre de alias a ese bean.Puedes consultar el documento de primavera aquí.
fuente