업데이트:

1 분 소요

개요

벌써 스프링 스터디를 시작한지 6주차(0주차 포함, 챕터6)가 되었다.

이번 5주차에서는 빈의 초기화와 정리 메서드를 정리하려고한다.

지금까지 의존 관계 주입, 빈 정의에 대해서 배웠고 그 과정에서 빈과 컨테이너의 생명주기에 대해서도 어느정도 알게 되었다.

컨테이너의 생명주기

Spring 컨테이너는 아래와 같은 생명주기를 가진다.

생성 -> 빈 설정 -> 사용 -> 소멸

빈의 생명주기

빈은 아래와 같은 생명주기를 가진다.

객체 생성 -> 초기화 -> 사용 -> 소멸

이러한 과정 속에서 초기화소멸에 대해서 알아보려고 한다.

초기화

빈은 초기화를 필요로 한다.
부끄럽지만, 왜 초기화가 필요로 되는가 라는 생각이 먼저 들었다.
따라서 간단히 초기화에 대해 조금 생각해보기로 했다.

init_int = 1;

초기화는 어떤 변수 의 초기값을 설정해주는 것이며 이는 다른 프로그램이나 운영체제 등에서 같은 변수를 사용할 수 있기 때문에 지금 사용할 값을 초기값으로 지정하는 것과 같다고 생각했다.

이는 빈에서도 마찬가지이며 어떤 빈을 이용하기 위해서 그 빈에 프로퍼티를 통한 초기 설정 값을 설정해주어 사용할 수 있는 상태로 만들어 주는 것 이다.

빈의 초기화, 정리 로직의 커스텀화

컨테이너의 생명주기에 따라 스프링 컨테이너는 빈 클래스의 생성자를 호출해서 빈을 생성하고, 이후 컨테이너가 빈을 초기화 한다.
하지만 초기화 이전에 어떤 로직(파일을 열거나 데이터 베이스 연결 등)을 실행하고 싶다면 초기화 메서드를 <bean> 엘리먼트의 init-method 속성의 값으로 사용해 이를 커스텀화 할 수 있다.
이는 스프링 컨테이너가 제거되기 전에 어떤 로직을 실행하고 싶을 때 도 마찬가지다. 정리 로직은 destroy-method 속성을 통해 커스텀화 할 수 있다.

public void initDbConnect(){
    connection = DbConnection.getInstance();
}
public void releaseConnect(){
    connection.releaseConnection();
}

<bean id = "myDao" class = "example.spring" init-method = "initDbConnect" destroy-method = "releaseDbConnection">

댓글남기기