Spring lazy-init Example
November 05, 2021
Spring ApplicationContext
creates a bean with singleton scope by default. Generally singleton beans are pre-initialized. This is because errors in the configuration or surrounding environment can be discovered immediately. If this behavior is not desired and we want to initialize singleton bean lazily, we can use lazy-init
attribute on the <bean>
element. The lazy-init
accepts boolean value. The lazy-init="true"
enables a bean to be loaded lazily.
Find the sample code snippet.
<bean id="myBean" class="com.concretepage.MyBean" lazy-init="true"/>
Using lazy-init
app-conf.xml<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"/> <bean id="testB" class="com.concretepage.B" lazy-init="true"/> </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; 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"); System.out.println("Feth bean B."); context.getBean("testB"); } }
Bean A is initialized Feth bean B. Bean B is initialized