depends-on in Spring XML Configuration
March 10, 2023
In Spring XML configuration, the depends-on
property of <bean>
element is used to resolve bean dependencies. If a bean is needed to be initialized before any other bean, we can use depends-on
property.
Suppose we have three beans A, B and C. Their dependencies are as given below.
B depends on C
A depends on B.
First A will be initialized, and then B and then C.
<bean id="testA" class="com.concretepage.A" depends-on="testB"/> <bean id="testB" class="com.concretepage.B" depends-on="testC"/> <bean id="testC" class="com.concretepage.C" />
Complete Example
app-conf.xml<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="testA" class="com.concretepage.A" depends-on="testB"/> <bean id="testB" class="com.concretepage.B" depends-on="testC"/> <bean id="testC" class="com.concretepage.C" /> </beans>
package com.concretepage; public class A { public A(){ System.out.println("Bean A is initialized"); } }
package com.concretepage; public class B { public B(){ System.out.println("Bean B is initialized"); } }
package com.concretepage; public class C { public C(){ System.out.println("Bean C is Initialized."); } }
package com.concretepage; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("app-conf.xml"); } }
Bean C is Initialized. Bean B is initialized Bean A is initialized