Blog

[CS]17 Spring bean container 생성부터 스프링 종료까지의 사이클에 대해 알려주실 수 있을까요? @PostConstruct, @PreDestroy 어노테이션의 역할도 함께 알려주시면 좋습니다.

Author
Summary
Spring bean container 생성부터 스프링 종료까지의 사이클
Category
Study
Tags
CS
Favorite
Memory Date
2023/10/19
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
6 more properties
Spring bean container 생성부터 스프링 종료까지의 사이클에 대해 알려주실 수 있을까요? @PostConstruct, @PreDestroy 어노테이션의 역할도 함께 알려주시면 좋습니다.
스프링의 빈 라이프사이클은 다음과 같은 단계로 나눌 수 있습니다.
1.
빈 정의(Bean Definition) 및 등록:
XML 파일, Java의 Configuration 클래스 등을 통해 IoC 컨테이너에 빈을 정의하고 등록합니다.
2.
빈 생성:
IoC 컨테이너는 정의된 빈을 생성하고, 빈의 의존성을 주입합니다.
예로 @Controller, @Service, @Repository, 그리고 @Component 등의 어노테이션을 사용하여 스프링이 빈을 인식하고 관리하는 부분이라 할 수 있습니다.
3.
인스턴스화 전 초기화 메서드 호출:
빈이 생성되고 의존성이 주입된 후, @PostConstruct 어노테이션이 붙은 메서드가 호출됩니다.
이 메서드를 사용하여 빈의 초기화 작업을 수행할 수 있습니다. 이 때 위 어노테이션을 작성한 클래스들의 실행부들이 빈에 등록되며 초기화 됩니다.
4.
빈 사용:
애플리케이션이 실행되면서 빈은 필요한 곳에서 사용됩니다.
private UserRepository userRepository; 유저리포지토리를 선언하고 생성자로 호출하면 IoC 컨테이너에 등록되있는 빈을 주입받아 사용할 수 있습니다. 생성자는 @RequiredArgsConstructor 를 통해 생략 가능합니다.
이 단계에서 다양한 작업을 수행하는 실제 기능들이 수행됩니다.
5.
빈 소멸 전 처리:
애플리케이션이 종료되기 전에 빈 소멸 전 처리가 수행됩니다.
@PreDestroy 어노테이션이 붙은 메서드를 통해 빈을 소멸하기 전에 수행할 작업을 정의할 수 있습니다.
6.
빈 소멸:
애플리케이션이 종료되거나 빈이 더 이상 필요하지 않을 때, 소멸 전 처리까지 완료된 이후 빈이 소멸됩니다.
이런 라이프사이클을 관리함으로써 스프링은 빈의 생성, 초기화, 사용, 소멸 등의 과정을 효과적으로 관리할 수 있습니다. @PostConstruct 어노테이션은 초기화 메서드에, @PreDestroy 어노테이션은 소멸 전 처리 메서드에 사용됩니다. 이를 통해 각 빈이 생성 및 소멸 과정에서 필요한 작업을 수행할 수 있습니다.
추가질문 IoC 컨테이너는 어떻게 구성되어있나요?
IoC 컨테이너는 크게 ApplicationContextBeanFactory 로 구성됩니다. BeanFactory 가 기본 컨테이너이며
ApplicationContextBeanFactory를 상속하고 있어서 다양한 기능과 기능 확장이 가능한 고급 컨테이너입니다. 예시로 @Controller 어노테이션이 붙은 클래스는 ApplicationContext에 빈으로 등록되며 스프링에서 사용할 수 있는 컨트롤러로 인식됩니다.