본문 바로가기

SpringFramework Core - I. IoC 컨테이너/6. Bean 커스터마이징하기

6.1.1. 초기화 콜백

원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-lifecycle-initializingbean

 

 

org.springframework.beans.factory.InitializingBean 인터페이스는, 컨테이너로부터 필요한 프로퍼티들을 bean에 모두 세팅받은 후에 초기화 작업을 수행할 수 있도록 해준다. InitializingBean 인터페이스는 하나의 메소드를 가진다.

void afterPropertiesSet() throws Exception;

우리는 InitializingBean 인터페이스를 사용하지 않는 것을 권장한다. 스프링과 불필요한 결합을 맺게되기 때문이다. 대신에, @PostConstruct 어노테이션이나 POJO 초기화 메소드를 사용하는 것을 추천한다. XML 기반의 설정 메타데이터에서는, void이면서 인자가 없는 메소드의 이름을 특정하기 위해 'init-method' 속성을 사용할 수 있다. 자바 설정에서는 @Bean의 initMethod 속성을 사용할 수 있다. '라이프사이클 콜백 받기'를 참고하라. 다음 예시를 보자.

<bean id="exampleInitBean" class="examples.ExampleBean" init-method="init" />
public class ExampleBean {

    public void init() {
        // 초기화 작업을 한다.
    }
}

선행하는 예시들은 다음 예시들과 거의 같은 효과를 가진다.

<bean id="exampleInitBean" class="examples.AnotherExampleBean" />
public class AnotherExampleBean implements InitializingBean {

    @Override
    public void afterPropertiesSet() {
        // 초기화 작업을 한다.
    }
}

하지만, 전자의 두 예시는 스프링의 코드와 결합되지 않는다.