기본적으로 스프링 컨테이너의 생명주기는 [객체 생성 -> 프로퍼티설정 -> 초기화 -> 사용 후 소멸]이라는 라이프 사이클을 가지고 있다. 스프링은 객체의 초기화와 소멸 과정을 위해 두가지의 인터페이스를 제공해준다.
- o.s.beans.factory.InitializingBean : 빈의 초기화 과정에서 실행될 메서드를 정의
- o.s.beans.factory.DisposableBean : 빈의 소멸 과정에서 실행될 메서드를 정의
두가지의 인터페이스는 다음과 같이 정의되어있다.
public interface InitializingBean{
void afterPropertiesSet() throws Exception;
}
public interface DisposableBean{
void destroy() throws Exception;
}
이 두가지를 구현한 클래스를 빈으로 등록하면 스프링은 초기화를 진행하고, 컨테이너를 종료할 때 소멸을 진행한다.
초기화/소멸을 진행하는 또다른 방법은 @PostConstruct, @PreDestroy를 사용하는 것이다.
이 외에 커스텀으로 초기화/소멸 메서드를 지정하는 방법이 있는데 다음과 같이 지정할 수 있다.
<bean id = "빈 이름" class = "클래스" init-method = "init" destroy-method = "destroy"/>
초기화와 소멸과정에서 사용되는 메서드는 파라미터를 가질 수 없다!
다음으로 빈 객체의 범위에 대해서 알아보겠다.
빈 객체의 범위에는 싱글톤과 프로토타입 범위가 있다. 먼저 싱글톤 범위는 빈 객체를 생성할 때 항상 같은 객체를 참조하는 것이다. 두개의 빈을 생성해도 같은 객체를 참조한다. 프로토타입 범위로 빈을 설정하면 빈 객체를 생성할 때 항상 새로운 객체가 만들어진다. 상황에 따라서 다르게 쓰면 된다.
<bean id = "빈 아이디" class = "클래스" scope = "singleton, prototype"/>
'Spring' 카테고리의 다른 글
Spring(6) - 스프링 MVC프로젝트 (0) | 2019.04.12 |
---|---|
Spring(5) - AOP(관점지향프로그래밍) (0) | 2019.04.10 |
Spring(3) - @Autowired, @Resource 사용하기 (0) | 2019.04.09 |
Spring(2) - DI(의존성 주입)이란? (0) | 2019.04.09 |
Spring(1) - Spring과Maven (0) | 2019.04.09 |