¿Hay alguna diferencia entre usar un idatributo y un nameatributo 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
idatributo se ajusta a los estándares de atributos de id XML, mientras quenamees un poco más flexible. En general, usonamecasi exclusivamente. Simplemente parece más "Spring-y".fuente
Desde Spring 3.1, el
idatributo es anxsd:stringy permite el mismo rango de caracteres que elnameatributo.La única diferencia entre an
idy anamees que anamepuede contener múltiples alias separados por una coma, punto y coma o espacios en blanco, mientras que uniddebe 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 beanidy suministrar el bean en sunamelugar.El
nameatributo también ayuda a definiraliases 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
idynameson identificadores de beans en el contenedor Spring IOC / ApplicationContecxt. Elidatributo le permite especificar exactamente una identificación, pero al usar elnameatributo puede darle un nombre de alias a ese bean.Puedes consultar el documento de primavera aquí.
fuente