반응형
빈 생명주기(Bean Life Cycle)
빈(Bean) 생명주기는 Spring Framework에서 관리되는 객체가 생성되고, 초기화되고, 소멸되는 과정을 말합니다.
Spring은 빈의 생명주기를 관리하기 위해 다양한 콜백 메서드와 인터페이스를 제공합니다.
Spring의 빈 생명주기 관리는 개발자가 별도로 처리할 필요 없이 Spring 컨테이너가 자동으로 처리해주기 때문에 편리합니다. 이를 통해 객체의 초기화 및 소멸에 관련된 로직을 적절히 구현하고 관리할 수 있습니다.
- 스프링 컨테이너 생성
- 스프링 빈 생성
- 의존 관계 주입
- 초기화 콜백
- 빈 사용
- 소멸전 콜백
- 스프링 종료
아래 이미지는 더욱 상세히 빈 생명주기를 보여주는 이미지입니다.
빈 인스턴스화 및 DI
- 빈 인스턴스의 생성
Spring 컨테이너는 빈을 생성하기 위해 해당 빈의 클래스를 인스턴스화합니다. 빈 클래스는 일반적으로 기본 생성자를 가지며, 필요에 따라 의존성 주입을 통해 초기화될 수도 있습니다. - 의존성 주입
Spring은 빈이 의존하는 다른 빈을 주입하여 객체 간의 관계를 설정합니다. 의존성 주입은 생성자 주입, 수정자 주입, 필드 주입 등의 방식으로 이루어질 수 있습니다.
빈 생성 생명주기 콜백
- 초기화 콜백
빈이 생성되고 의존성 주입이 완료되면, Spring은 초기화 콜백 메서드를 호출하여 빈을 초기화할 수 있습니다. 초기화 콜백은 InitializingBean 인터페이스를 구현하거나 init-method를 지정하거나 @PostConstruct 어노테이션을 사용하여 정의할 수 있습니다. 초기화 콜백 메서드는 빈이 사용 가능한 상태가 되도록 필요한 초기화 작업을 수행합니다.
@PostConstruct 어노테이션
`@PostConstruct` 어노테이션을 초기화 메서드에 부여하여 초기화 콜백을 정의할 수 있습니다. 이 방식은 간결하여 코드를 작성하는데 부담이 적고, 초기화 메서드가 존재한다는 것을 가시성 좋게 명시할 수 있으므로 가장 권장되는 방식입니다.
import javax.annotation.PostConstruct;
public class Demo {
@PostConstruct
public void init() {
// 빈 초기화 로직 구현
}
}
빈 사용
- 빈 사용
초기화가 완료된 빈은 Spring 컨테이너나 애플리케이션에서 사용될 수 있습니다. 다른 빈이나 컴포넌트에서 해당 빈을 주입받아 사용할 수 있습니다.
빈 소멸 생명주기 콜백
- 소멸 콜백
Spring 컨테이너가 종료되거나 해당 빈이 제거되어야 할 때, 소멸 콜백 메서드가 호출됩니다. 소멸 콜백은 DisposableBean 인터페이스를 구현하거나 destroy-method를 지정하거나 @PreDestroy 어노테이션을 사용하여 정의할 수 있습니다. 소멸 콜백 메서드는 빈이 사용한 리소스를 정리하거나 기타 정리 작업을 수행합니다.
@PreDestroy 어노테이션
빈이 소멸되기 전에 호출되어야 하는 메서드에 부여합니다. 즉, 빈이 제거되기 전에 필요한 정리 작업을 수행하는 메서드를 정의할 수 있습니다.
import javax.annotation.PreDestroy;
public class Demo {
@PreDestroy
public void cleanUp() {
// 빈 소멸 전 정리 작업 수행
}
}
반응형
'Spring Framework' 카테고리의 다른 글
Spring 프로퍼티 파일 ( .properties, .yaml), 프로파일(profiles) (0) | 2022.08.25 |
---|---|
Spring @ComponentScan, @Import, @Enable (0) | 2022.08.24 |
Spring 빈 스코프 ( Bean Scope ) (0) | 2022.08.23 |
Spring @Autowried: 의존 관계 자동 주입 (0) | 2022.08.21 |
Spring 빈(Bean) 등록 방법 ( XML, Annotation, Java 설정 클래스 ) (0) | 2022.08.20 |