lazy-init 은 "true", "false", "default" 세 가지의 옵션을 가질 수 있다. default 는 spring 의 기본 동작에 맞게 bean 을 생성하며 기본 동작은 false 이다. true 로 설정할 경우 나중에 Bean 을 생성하게 된다.
lazy-init="true" 로 설정해도 해당 bean 이 lazy-init="false" 인 bean 에서 참조된다면 의존성 관계로 인해 초기화 프로세스에서 생성되게 된다.
src/main/java/com/exmaple/First.java
package com.example;
public class First {
public First() {
System.out.println("Class First is initialized");
}
}
CODE
src/main/java/com/exmaple/Second.java
package com.example;
public class Second {
public Second() {
System.out.println("Class Second Initialized");
}
}
CODE
src/test/resources/spring-lazy.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<bean id="secondBean" class="com.example.Second" lazy-init="true" />
<bean id="firstBean" class="com.example.First" lazy-init="default" />
</beans>
XML
LazyInitTest
package com.example;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class LazyInitTest {
@Test
public void LazyInitTest() {
ApplicationContext context = new ClassPathXmlApplicationContext("spring-lazy.xml");
System.out.println("Calling Second Bean");
context.getBean("secondBean");
}
}
CODE
There is no content with the specified labels