¿El comando <import>
del Springbean container elimina los contenedores duplicados? Por ejemplo, si el archivo A del contenedor de frijoles importa B y C y cada uno de estos a su vez importa D, ¿Spring elimina o ignora el contenedor D duplicado?¿El comando Contenedor de grano de primavera <import> elimina los contenedores duplicados?
Respuesta
No elimina los "contenedores" duplicados, pero eliminará las definiciones de beans duplicados. Por lo tanto, los granos en D solo se crearán una vez en la fábrica de beans resultante. Sin embargo, tendrá una cara llena de advertencias al respecto.
Es algo que es mejor evitar. Una definición de bean que tenga la misma ID que otra "ocultará" la definición de bean, independientemente de si el tipo y las propiedades de ese bean son iguales o no. Cuál se "oculta" depende del orden de la declaración. Es peligroso, así que Spring te avisará al respecto.
creé ejemplo de proyecto spring-context-import en GitHub confirmar de answer skaffman:
$ mvn test
.
.
.
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running ca.derekmahar.example.springContextImport.SpringContextImportTest
2011-03-15 16:25:44,980 545 [main] INFO o.springframework.test.context.TestContextManager - @TestExecutionListeners is not present for class [class ca.derekmahar.example.springContextImport.SpringContextImportTest]: using defaults.
2011-03-15 16:25:45,240 805 [main] INFO o.s.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-application-context.xml]
2011-03-15 16:25:45,417 982 [main] INFO o.s.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-application-context-a.xml]
2011-03-15 16:25:45,459 1024 [main] INFO o.s.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-application-context-b.xml]
2011-03-15 16:25:45,484 1049 [main] INFO o.s.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-application-context-d.xml]
2011-03-15 16:25:45,551 1116 [main] INFO o.s.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-application-context-c.xml]
2011-03-15 16:25:45,585 1150 [main] INFO o.s.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-application-context-d.xml]
2011-03-15 16:25:45,610 1175 [main] INFO o.s.b.factory.support.DefaultListableBeanFactory - Overriding bean definition for bean 'd': replacing [Generic bean: class [ca.derekmahar.example.springContextImport.bean.D]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [spring-application-context-d.xml]] with [Generic bean: class [ca.derekmahar.example.springContextImport.bean.D]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [spring-application-context-d.xml]]
2011-03-15 16:25:45,652 1217 [main] INFO o.s.context.support.GenericApplicationContext - Refreshing [email protected]5738: startup date [Tue Mar 15 16:25:45 EDT 2011]; root of context hierarchy
2011-03-15 16:25:45,895 1460 [main] INFO o.s.b.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.s[email protected]18825b3: defining beans [d,b,c,a,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor]; root of factory hierarchy
2011-03-15 16:25:45,895 1460 [main] INFO ca.derekmahar.example.springContextImport.bean.C - Created D
2011-03-15 16:25:45,979 1544 [main] INFO ca.derekmahar.example.springContextImport.bean.B - Created B
2011-03-15 16:25:45,996 1561 [main] INFO ca.derekmahar.example.springContextImport.bean.C - Created C
2011-03-15 16:25:46,005 1570 [main] INFO ca.derekmahar.example.springContextImport.bean.A - Created A
2011-03-15 16:25:46,038 1603 [main] INFO ca.derekmahar.example.springContextImport.bean.A - Running A
2011-03-15 16:25:46,038 1603 [main] INFO ca.derekmahar.example.springContextImport.bean.B - Running B
2011-03-15 16:25:46,038 1603 [main] INFO ca.derekmahar.example.springContextImport.bean.C - Running D
2011-03-15 16:25:46,038 1603 [main] INFO ca.derekmahar.example.springContextImport.bean.C - Running C
2011-03-15 16:25:46,038 1603 [main] INFO ca.derekmahar.example.springContextImport.bean.C - Running D
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.846 sec
Como skaffman predijo, observe la "definición de frijol overiding de frijol 'd'" mensaje de los cuales banderas del grano duplicado "d".
- 1. grano de primavera campos inyección
- 2. Primavera No único grano de tipo
- 3. GROUP BY no elimina los duplicados
- 4. Primavera @ Confusión autoajustada (contenedor o sesión)
- 5. De grano grueso frente a grano fino
- 6. ¿Qué es el contenedor en el marco de primavera?
- 7. Creación de un grano de enumeración primavera y pasar el valor de una llamada al método
- 8. de contenedores STL que preserva el orden de inserción, pero no permite duplicados
- 9. ¿Cómo puede ser un grano de primavera con el método de fábrica pero sin fábrica?
- 10. Función genérica para aplanar un contenedor de contenedores
- 11. ¿Qué tipo de lista <?> eliminará automáticamente los duplicados?
- 12. Jerarquía de contenedores MEF y GetExports <T>
- 13. Adición de un grano de pre-construido a un contexto de aplicación primavera
- 14. comportamiento de los contenedores C++
- 15. primavera Util: Propiedades de inyección a través de anotaciones en un grano de
- 16. Contenedor de escucha de mensaje JMS de primavera
- 17. ¿Se supone que Sanitizer.GetSafeHtmlFragment elimina los elementos <br>?
- 18. Cómo aplanar los iteradores de contenedores anidados?
- 19. Cómo modificar beans definidos en un contenedor de primavera
- 20. CSS: Cuadro de texto para llenar los Padres de contenedores
- 21. Contenedores de servlets y classpath
- 22. ¿Qué rendimiento superior implican los contenedores de IoC?
- 23. Antipatrones del uso de contenedores de IoC. ¿Por qué los contenedores IoC son tan complejos y se usan de manera tan "elegante"?
- 24. ¿Hay una forma estándar de convertir desde el contenedor <Type1> al contenedor <Type2>?
- 25. ¿Cómo copian los objetos STL los contenedores?
- 26. ¿Por qué los push_back en los contenedores vector <> y list <> devuelven la referencia al elemento insertado?
- 27. ¿Puede un comando de formulario de primavera ser un mapa?
- 28. Escribiendo un contenedor de línea de comando portátil en C
- 29. ¿Cómo ejecuto un contenedor desde el interior de un contenedor?
- 30. Autowire primavera y el alcance
Supongo que los frijoles están almacenados en caché en algún tipo de mapa por su id de frijol (por lo que solo habría un frijol por cada id de frijol), pero esperaré a que alguien lo confirme. – ninjalj
La solicitud de función para votar: https://jira.springsource.org/browse/SPR-9526 – Vadzim