스프링 XML 설정에서 빈 등록 순서 문제와 @PostConstruct 활용
스프링 XML 설정에서는
명시적으로 빈을 등록하는 방법과
<context:component-scan>
을 혼용해서 사용할 수 있습니다.
하지만 이 경우,
빈 등록 순서 오류가 발생할 수 있습니다.
이는 특정 빈이 아직 등록되거나 초기화되지 않았는데,
다른 빈이 이를 참조하려고 할 때 발생하는 문제입니다.
빈 등록 순서 문제 해결 방법: @PostConstruct 사용
빈 등록 순서를 관리하는 방법은 여러 가지가 있지만,
그 중 하나로 @PostConstruct
어노테이션을 사용할 수 있습니다.
@PostConstruct의 특징
-
스프링 빈의 생성과 의존성 주입이 모두 완료된 후 호출됩니다.
-
다른 빈을 참조해야 하는 경우에도,
해당 빈들이 모두 정상적으로 주입된 이후에 실행되므로,
NullPointerException(객체가 존재하지 않는 오류)을 예방할 수 있습니다.
사용 예시
@PostConstruct
public void init() {
// 초기화 작업 수행
}
@PostConstruct
메서드 안에서는
모든 필요한 의존성 빈이 준비된 상태이기 때문에,
안심하고 초기화 로직을 작성할 수 있습니다.
요약
-
XML 수동 등록과
component-scan
을 혼용하면 빈 초기화 순서 문제가 발생할 수 있다. -
@PostConstruct
를 활용하면 의존성 주입이 완료된 후 안전하게 초기화 작업을 수행할 수 있다.