Estoy revisando algunos códigos de Spring, y veo algunos defys de frijoles que no tienen una identificación o un nombre. La persona que lo hizo no está para preguntar. La aplicación funciona bien. No estoy familiarizado con lo que esto significa necesariamente. ¿Alguien sabe si esto significa algo en particular?Frijol de primavera sin identificación o nombre
Respuesta
Algunos beans no son necesarios para acceder a otros beans en el archivo de contexto o programáticamente. Como lo menciona JacobM, no requieren una identificación o nombre ya que no están referenciados.
Un ejemplo de este tipo sería PropertyPlaceholderConfigurer, que lee un archivo de propiedades y permite el reemplazo de propiedades en tiempo de ejecución en la definición de contexto.
La definición ejemplo sería
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="myapp.properties" />
</bean>
el Javadoc proporciona documentación adicional sobre este objeto, pero más adelante en el archivo que puede hacer referencia a las propiedades de su archivo con sólo usar la plantilla estándar se sustituye espacio $ {.. .}.
Una posibilidad es que pueda definir un bean en su lugar y, por lo tanto, no necesita un ID, ya que no necesita consultarlo desde ningún otro lugar. Decir que tengo un objeto que se lleva a Foo una propiedad Bar:
<bean id="foo" class="Foo">
<property name="bar">
<bean class="Bar">
</property>
</bean>
El grano de barra no necesita un nombre, ya que sólo se usa para establecer que una propiedad.
Los atributos id y name son opcionales y se utilizan para hacer referencia a la definición de bean de otras definiciones. Mira el official Spring documentation para más detalles.
Compruebe la posibilidad de auto-cableado. Otro bean podría hacer referencia al bean sin nombre al tener la propiedad de autowire establecida en byType.
Esto es sólo una suposición. Sin un ejemplo concreto, no puedo decir nada más.
Los frijoles sin identificación o nombre todavía pueden ser referenciados por el nombre de clase. Spring nombra esos beans automáticamente utilizando el nombre de la clase y si hay más de un bean de la misma clase, les agrega un número. Por lo general, los beans anónimos se definen dentro de una etiqueta de propiedad, pero si solo están allí, tal vez haya un autoconfigurado configurado en algunos otros beans. De todos modos, creo que agregar un nombre o una identificación a esos beans no romperá su aplicación.
Como un par de personas mencionadas anteriormente, no todas las tomas de frijoles se basan en nombre/ID; algo de esto se basa en el tipo. Por ejemplo, hay un método
BeanFactoryUtils.beansOfTypeIncludingAncestors (...)
que atrapa todos los granos de algún tipo determinado. Esto es utilizado, por ejemplo, por Spring Web MVC DispatcherServlet (entre muchos otros lugares) para descubrir beans por tipo, como HandlerMappings, HandlerAdapters, HandlerExceptionResolvers, etc. Contraste esto con los casos en que el bean debe tener un nombre/ID conocido específico que se debe encontrar, como LocaleResolver (ID debe ser "localeResolver" o no se encontrará) y ThemeResolver (ID debe ser "themeResolver" o no será encontrado).
Beans definidos sin nombre y ID se puede acceder con un ID generado (nombre completo del paquete y nombre de la clase), por ejemplo:
bean define como
<bean class="pl.finsys.initOrder.TestBeanImpl">
se puede acceder por
TestBean bean = (TestBean) ctx.getBean("pl.finsys.initOrder.TestBeanImpl");
// frijol cfg sin bean id
<bean class="com.ds.DemoBean"> <property name="msg" value="Hello"/> </bean>
// Podemos acceder a
objeto obj = factory.getBean ("com.ds.DemoBe
no es un obligatorio proporcionar Java Bean Id..If no estamos proporcionando bean id, nuestra El contenedor proporciona el identificador predeterminado de Id. De haba Id.Default como "(Nombre del paquete). (Nombre de clase de grano) #N" donde N = 0,1,2, ...... etc.
Parece que hay una diferencia sutil entre el comportamiento del bean sin nombre y el nombre. Si tiene un archivo de configuración XML importado dos veces, cada bean nombrado se creará solo una vez, pero se creará un bean sin nombre tantas veces como se incluya su definición. Cuando se trata de un grano de Autowire tales por tipo, que conduce a errores como este:
No qualifying bean of type [your.class.Name] is defined: expected single matching bean but found 4
- 1. primavera inicializar frijol con nombre de host
- 2. ¿Cómo obtener la identificación de un frijol dentro del frijol en primavera?
- 3. primavera - Acceso frijol en JSP
- 4. referencias de frijol de primavera opcionales
- 5. nueva transacción en el frijol de primavera
- 6. sesión en ámbito de frijol de primavera con DWR
- 7. Cambio frijol propiedad/valor en tiempo de ejecución en primavera
- 8. crear instancias de frijol clase genérica en la primavera
- 9. redefinición de la configuración de frijol en la primavera
- 10. JSF 2 inyecte primavera frijol/servicio con @ManagedProperty y sin xml
- 11. Validación de frijol para @Past o hoy?
- 12. entidad JPA sin Identificación
- 13. Primavera ORM o Hibernate
- 14. XML Spring frijol interior pregunta
- 15. Declarar una matriz de objetos en un contexto de frijol de primavera
- 16. Conexión a Oracle sin nombre de usuario o contraseña
- 17. primavera: Crear nueva instancia de frijol para cada llamada de método get
- 18. primavera Lenguaje Expresión y Spring Security 3: el acceso a la referencia de frijol en @PreAuthorize
- 19. ¿La mejor manera de forzar el cierre de primavera de un frijol?
- 20. ¿Cuál es el contexto de aplicación y la fábrica de frijol en el marco de primavera
- 21. Cómo configurar un frijol de primavera con propiedades que están almacenadas en una tabla de base de datos
- 22. autowiring primavera con las habas únicas: frijol juego único resorte de esperar, pero encontrado 2
- 23. Habilitar primavera AOP o AspectJ
- 24. Definición de frijol de primavera usando una clase con parámetros genéricos
- 25. grano de primavera campos inyección
- 26. javax.servlet.ServletException: frijol [nombre] no se encuentra dentro del ámbito
- 27. primavera: cómo ignorar la propiedad @Autowired si frijol no se define
- 28. Autowiring en la primavera de frijol (@Component) creado con la nueva palabra clave
- 29. Dependencia circular en la primavera
- 30. Autocableante de bean de primavera por nombre usando la anotación
considere poner un ejemplo de definición - sin ver la definición en el contexto, es difícil dar una respuesta concreta. –
Si no se proporciona un nombre explícitamente, el contenedor generará un nombre único para ese bean. – lolotron
De forma predeterminada, la ID del bean se generará por camel-casing el nombre de la clase. – lolotron