2020년 10월 3일 토요일

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

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


http://ojc.asia/bbs/board.php?bo_table=LecSpring&wr_id=864




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



https://youtu.be/R3iQnppqa74




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


#스프링프레임워크 , #자바, #Spring Framework


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



댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...