'라이프사이클'에 해당되는 글 1건

  1. 2009.12.13 빈 라이프 사이클

라이프 사이클

-       스프링 컨테이너에 저장되는 빈 객체는 최소한 생성,초기화, 소멸의 라이프 사이클을 갖게 된다.

-       스프링은 빈 객체의 생성, 초기화, 소멸뿐만 아니라 추가적인 단계를 제공하고 있으며 이를 통해 라이프 사이클에 따른 빈 객체의 상태를 정교하게 제어할 수 있다.

-       빈 객체의 라이프 사이클은 빈 클래스가 구현한 인터페이스와 관리되는 컨테이너에 따라 달라진다.

 

 

1.     빈의 인스턴스화(생성자 호출)

2.     필드값 설정

3.     setBeanName() 메소드 호출(BeanNameAware 인터페이스를 구현하고 있을 경우)

4.     setBeanFactory() 메소드 호출(BeanFactoryAware 인터페이스를 구현하고 있을 경우)

5.     BeanPostProcessorpostProcessBeforeInitialization() 메소드 호출 ( BeanFacotry BeanPostProcessor 클래스가 관련되어 있을 경우 )

6.     afterPropertiesSet() 메소드 호출(InitializingBean 인터페이스를 구현하고 있을 경우)

7.     Custom 초기화 메소드 호출(Custom 초기화 메소드가 정의되어 있을 경우)

8.     BeanPostProcessor postProcessAfterInitialization() 메소드 호출 (BeanFactory BeanPostProcessor 클래스가 관련되어 있을 경우)

9.     빈 사용

 

그리고 컨테이너가 종료할 때에는 다음 순서로 메소드가 호출된다.

1.     destroy() 메소드 호출 (DisposableBean 인터페이스를 구현하고 있을 경우)

2.     Custom Destroy 메소드 호출

 

BeanFactory일 때의 setBeanFactory() 단계 이후에 다음과 같은 4단계의 라이프 사이클을 추가로 수행한다.

1.     setResourceLoader() 메소드 호출 (ResourceLoaderAware 인터페이스를 구현하고 있을 경우)

2.     setApplicationEventPublisher() 메소드 호출 (ApplicationEventPublisherAware 인터페이스를 구현하고 있을 경우)

3.     setMessageSource() 메소드 호출(MessageSourceAware 인터페이스를 구현하고 있을 경우)

4.     setApplicationContext() 메소드 호출 (ApplicationContextAware 인터페이스를 구현하고 있을 경우)

 

Posted by 피곤키오
,