Estoy confundido entre el atributo ref y depends-on en Spring.I leí el doc de primavera pero todavía estoy confundido.Me gustaría saber la diferencia exacta entre los dos y en cuyo caso cuál uno debe ser usado.ref vs depende de los atributos en Spring
Respuesta
De acuerdo con la spring documentation
Si usted necesita expresar una dependencia de múltiples granos, puede proporcionar una lista de nombres de frijol como el valor de la 'depende-on' atributo, por comas, espacios en blanco y puntos y comas todo delimitadores válidos, así:
<bean id="beanOne" class="ExampleBean" depends-on="manager,accountDao">
<property name="manager" ref="manager" />
</bean>
<bean id="manager" class="ManagerBean" />
<bean id="accountDao" class="x.y.jdbc.JdbcAccountDao" />
el 'depende-on' de atributos y propiedades se utiliza no sólo para especificar una dependencia del tiempo de inicialización, sino también para especificar la dependencia del tiempo que corresponde a destruir (en el caso de los granos simples solamente) Los beans dependientes que se definen en el atributo 'depende de' se destruirán primero antes de que se destruya el propio bean correspondiente. Esto le permite controlar la orden de apagado también.
Por otro lado, para la mayoría de las situaciones, el hecho de que un bean sea una dependencia de otro se expresa por el hecho de que un bean se establece como una propiedad de otro. Esto normalmente se logra con el elemento en los metadatos de configuración basados en XML.
<bean id="a" class="ClassA"/>
<bean id="b" class="ClassB">
<property name="aref" ref="a" />
</bean>
Depende-en -> Frijoles de los que depende la judía actual. Todos los beans especificados están garantizados para ser creados por el contenedor antes de este bean. Se usa con poca frecuencia en los casos en que un bean no depende explícitamente de otras propiedades intermedias o argumentos de constructor, sino que depende de los efectos secundarios de la inicialización de otro bean.
En la respuesta anterior proporcionó, la siguiente declaración es incorrecta,
"frijoles dependientes que se definen en el 'depende-on' atributo se destruyó el primero antes del frijol relevante en sí sean destruidos"
Primero se destruirá el grano principal y luego se destruirán los granos dependientes.
aquí está mi resultado de la prueba,
destruir de clase principal se llama.
Destrucción de dependiente se llama.
Quizás sea útil un ejemplo de una situación en la que se necesita depender. Uso Spring para cargar y cablear mis granos. He aquí un ejemplo de definición de frijol:
<bean id="myBean" class="my.package.Class">
<property name="destination" value="bean:otherBeanId?method=doSomething"/>
</bean>
<bean id="otherBeanId" class="my.package.OtherClass"/>
en cuenta que el valor de la propiedad es una cadena, que hace referencia a otherBeanId. Debido a la forma en que se resuelve esta variable, Spring no se entera de la dependencia, por lo que puede destruir otherBeanId y luego myBean. Esto puede dejar myBean en un estado roto por un tiempo.
puedo usar depende de solucionar este problema de la siguiente manera:
<bean id="myBean" class="my.package.Class" depends-on="otherBeanId">
<property name="destination" value="bean:otherBeanId?method=doSomething"/>
</bean>
- 1. Clase VS ref. Estructura
- 2. Ref atributo o atributos Type en XSD
- 3. IntPtr vs ref C#
- 4. VS.NET: Ref. De proyecto vs. Ref. De ensamblaje
- 5. Scalar :: Util vs ref function
- 6. de beans Spring Herencia - Alcance, Autowire, depende-en, etc
- 7. NHibernate Fluido vs. Atributos
- 8. Variables mutables vs Ref en términos de captura
- 9. elementos XML vs Atributos
- 10. Spring Hibernate Vs jdbc template vs spring orm
- 11. JPA vs Spring JdbcTemplate
- 12. Elección de los atributos en la instancia XML para los atributos o referencias directamente definidos
- 13. Spring vs Hibernate
- 14. Struts2 vs Spring 3
- 15. spring mvc vs seam
- 16. Estrategia de integración continua - Ref. Proyecto vs Branching/Merging
- 17. Spring vs Jboss
- 18. Spring JDBC vs JDBC
- 19. Python Clase vs. Módulo Atributos
- 20. NSustituye los parámetros de ref de soporte?
- 21. Magento Opciones personalizadas VS Atributos
- 22. axis2 vs spring-ws vs jersey
- 23. ant depende contra anticaída
- 24. Desventajas del uso de Stripes + Spring vs Spring MVC
- 25. Entradas ocultas vs atributos de datos HTML5
- 26. ¿Cómo puedo acceder a los atributos de los métodos con Spring AOP (estilo AspectJ)?
- 27. SCons depende de los archivos generados en tiempo de compilación
- 28. Cómo leo los argumentos de JVM en Spring applicationContext.xml
- 29. Servicios web vs Spring remoto
- 30. ASP.NET MVC vs Spring MVC
Esta es una buena explicación :) – Krishna
@Anshu lo que si no conoce el ID de frijol, pero el nombre completo? – verystrongjoe
Esto es muy útil para hacer beans. Esperar a la construcción de beans B incluso si B no es propiedad de A. Llegué a este caso en las pruebas donde necesitaba un proxy de red para inicializarlo antes que un cliente, aunque el cliente no sabía nada sobre proxies. – Wheezil