Using Depends On

Uso de depends-on

Si un bean depende de otro, normalmente significa que uno se configura como propiedad del otro. Por lo general, esto se consigue mediante el elemento <ref/> en la metadata basada en XML o mediante la autoinyección de dependencias.

Sin embargo, algunas dependencias entre beans son menos directas. Por ejemplo, puede ser necesario activar el inicializador estático de una clase, como ocurre con el registro de un controlador de base de datos.

El atributo depends-on o la anotación @DependsOn permiten forzar explícitamente que uno o varios beans se inicialicen antes que el bean que declara esta dependencia.

El siguiente ejemplo usa el atributo depends-on para expresar una dependencia de un único bean:

<bean id="beanOne" class="ExampleBean" depends-on="manager"/>
<bean id="manager" class="ManagerBean" />

Para expresar una dependencia respecto de varios beans, proporciona una lista de nombres de beans como valor del atributo depends-on. Se pueden usar comas, espacios en blanco o punto y coma como separadores:

<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 atributo depends-on puede definir tanto una dependencia durante la inicialización como, únicamente para beans con ámbito singleton, una dependencia equivalente durante la destrucción.

Los beans dependientes que declaran una relación depends-on con un bean determinado se destruyen primero, antes de que se destruya el bean del que dependen. Por lo tanto, depends-on también puede utilizarse para controlar el orden de apagado de la aplicación.

Referencia

Traducción basada en la documentación oficial de Spring Framework:
https://docs.spring.io/spring-framework/reference/core/beans/dependencies/factory-dependson.html