스프링의 자바빈 로딩(사전로딩, 지연로딩, Pre-Loading, Lazy-Loading),@Lazy 어노테이션(스프링동영상/자바동영상/자바교육/스프링교육/SpringFramework/스프링프레임워크/스프링학원/자바학원)
http://ojc.asia/bbs/board.php?bo_table=LecSpring&wr_id=864

스프링의 자바빈 로딩(사전로딩, 지연로딩, Pre-Loading, Lazy-Loading),@Lazy 어노테이션(스프링동영상/자바동영상/자바교육/스프링교육/SpringFramework/스프링프레임워크/스프링학원/자바학원)

1. 스프링의 자바 빈 로딩
기본적으로 Spring의 ApplicationContext, WebApplicationContext는 애플리케이션을 시작할 때 모든 싱글톤 빈을 생성하고 초기화 합니다. (Pre-Loading)
대부분의 경우 초기 단계에서 빈 의 설정문제를 감지하는 데 도움이 됩니다.
그러나 때로는 다른 프로젝트 요구 사항으로 인해 일부 또는 모든 빈을 지연로딩(실제 요청이 있을 때) 초기화 할 수도 있습니다.
Spring은 Lazy-Loading을 위한 XML 기반 또는 Java Config 같은 두 가지 방법을 제공합니다.
스프링 설정 파일에 여러 개의 자바 빈이 정의되었다고 모두 자주 사용되는 것은 아닐 수 있고 이러한 경우 실제 요청이 있을 때 자바 빈을 로딩하는 것이 좋을 것입니다.
2. BeanFactory(Lazy-Loading)
BeanFactory를 이용한 빈의 로딩은 기본적으로 Lazy-Loading 입니다.
BeanFactory factory = new XmlBeanFactory( new InputStreamResource(
new FileInputStream(“emp.xml"))); // 1
EmpService ojc = (EmpService) factory.getBean(“empService"); // 2
1번에서 BeanFactory 컨테이너에 의해 emp.xml 파일이 로드되더라도 어떠한 빈도 인스턴스화 되지 않고 2번에서 empService 빈이 요청을 받는 시점에 인스턴스화 되고 로드된다.
3. ApplciationContext(Pre-Loading)
모든 빈들이 ApplicationContext 컨테이너에 의해 설정파일이 로드될 때 인스턴스로 만들어지고 로드 된다.
ApplicationContext ctx = new ClassPathXmlApplicationContext(“emp.xml"); // 1
EmpService ojc = (EmpService) factory.getBean(“empService"); // 2
1번에서 모든 싱글톤 빈들이 인스턴스화 된다. 그러므로 빈이 여러 개라면 시간이 소요될 것이다. 2번에서는 미리 Spring IoC 컨테이너에서 만들어진 빈들이 클라이언트로 리턴된다.
4. 자바 설정에서 @Lazy - 1
@Configuration
public class AppConfig {
@Lazy //아래빈은 지연로딩
@Bean
public EmpService empServiceImpl() {
return new EmpServiceImpl();
}
@Bean //아래빈은 즉시 로딩
public EmpDao empDaoImpl() {
return new EmpDaoImpl();
}
}
5. 자바 설정에서 @Lazy - 2
// AppConfig 파일에서 로딩하는 모든 빈을 지연로딩 시킨다.
@Lazy
@Configuration
public class AppConfig {
@Bean
public EmployeeManager employeeManager() {
return new EmployeeManagerImpl();
}
…….
}
6. @Autowired와 지연로딩
지연로딩을 위한 빈 정의 와 @Autowired가 사용되는 두 곳 모두 @Lazy 가 사용되어야 합니다.
@Lazy
@Service
publlic class EmpServiceImpl implements EmpService { … }
@Controller
public class EmpController {
@Lazy
@Autowired
EmpService empService;
……
}
7. XML 설정에서 지연로딩
스프링의 빈 정의 XML 파일에서 lazy-init=“true”라고 표시하면 됩니다.
<bean id=“empService” class=“ojc.EmpServiceImpl” lazy-init=“true”/>
XML 파일에서 정의하는 모든 빈들을 지연 로딩 하려면 beans 태그에 default-lazy-init=“true”로 표시하면 됩니다.
<beans default-lazy-init=“true”>
<bean id=“empService” class=“ojc.EmpServiceImpl”/>
</beans>

#스프링프레임워크 , #자바, #Spring Framework
#@Lazy, #preloading, #lazyloading, #지연로딩, #즉시로딩, #스프링DI, #스프링IoC, #SpringDI, #SpringIoC, #자바스프링, #Spring동영상, #Spring강의, #스프링프레임워크, #스프링교육, #스프링학원, #스프링강좌, #스프링강의, #자바학원, #자바, #스프링동영상, #자바동영상, #스프링프레임워크교육, #스프링프레임워크강의, #스프링프레임워크학원
댓글 없음:
댓글 쓰기