스츠링에서는 IoC 컨테이너가 Bean 객체들을 책입지고 의존성을 관리한다.
여기서 객체들을 관리한다는 것은 객체의 생성부터 소멸까지의 생명주기 관리를 개발자가 아닌 IoC 컨테이너가 대신 해준다는 의미이다.
스프링 Bean의 LifeCycle을 아래와 같다.
스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메소드를 통해 초기화 시점을 알려주며, 스프링 컨테이너가 종료되기 직전에도 소멸 콜백 메소드를 통해 소멸 시점을 알려준다.
스프링은 3가지 방법으로 빈 생명주기 콜백을 관리한다.
public class ExampleBean implements InitializingBean, DisposableBean {
@Override public void afterPropertiesSet() throws Exception {
// 초기화 콜백 (의존관계 주입이 끝나면 호출)
}
@Override public void destroy() throws Exception {
// 소멸 전 콜백 (메모리 반납, 연결 종료와 같은 과정)
}
}
인터페이스를 사용하는 초기화 및 종료 방법은 스프링 초창기에 나온 방법들이며 지금은 거의 사용하지 않는다.
public class ExampleBean {
public void initialize() throws Exception {
// 초기화 콜백 (의존관계 주입이 끝나면 호출)
}
public void close() throws Exception {
// 소멸 전 콜백 (메모리 반납, 연결 종료와 같은 과정)
}
}
@Configurationclass
LifeCycleConfig {
@Bean(initMethod = "initialize", destroyMethod = "close")
public ExampleBean exampleBean() { // 생략 }
}
import jakarata.annotation.PostConstruct;
import jakarata.annotation.PreDestroy;
public class ExampleBean {
@PostConstruct
public void initialize() throws Exception {
// 초기화 콜백 (의존관계 주입이 끝나면 호출)
}
@PreDestroy
public void close() throws Exception {
// 소멸 전 콜백 (메모리 반납, 연결 종료와 같은 과정)
}
}
Spring Bean의 개념과 생성원리 및 과정 (0) | 2024.06.08 |
---|---|
Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 해결하기 (0) | 2022.07.07 |
선언적 Transactional (0) | 2021.09.19 |
댓글 영역