공부/Spring 복습

스프링 생명 주기(Life Cycle)

ChoiDooSic 2021. 8. 29. 17:17

컨테이너와 빈이 언제 생성되고 소멸하는지 알아보자

# 스프링 컨테이너 생명주기
GenericXmlApplicationContext (객체명) = 
new GenericXmlAppicationContext("classpath:어딘가.xml");
1.이 객체를 생성하는 순간 스프링 컨테이너가 만들어진다(생성시점)
생성되어지는 순간 빈들이 같이 생성된다
즉 컨테이너와 빈의 생성시점은 동일하다고 볼 수 있다.

2. getBean()을 이용한 빈 객체 이용

3. 컨테이너를 close(); 를 이용하여 소멸 이때에
컨테이너 안에있는 Bean객체도 같이 소멸
(메모리에서 날라간다.)

즉 빈 객체에 생명을 주는것은 스프링 컨테이너의 생명주기와 같다

# InitializingBean, DisposableBean 사용하기
afterPropertiesSet() - 빈 객체 생성시에 호출
destroy() - 빈 객체 소멸시에 호출
(DB연결 할때에 아이디 패스워드 인증 같은 작업들...)

#사용하는 2가지 방법
인터페이스 사용법 과 속성 사용법으로 나뉜다

방법 1. 인터페이스 사용법
public class Test implements InitializingBean, DisposableBean;
인터페이스를 상속받은 후에
afterPropertiesSet(); 와 destroy()를 Override받고
안에 작업할 내용을 넣어준다
@Override
public void afterPropertiesSet(); throws Exception{
System.out.ptintln("빈 객체 생성");
}
@Override
public void destroy() throws Exception{
System.out.ptintln("빈 객체 소멸");
}


방법2. 속성 사용법
public void initMethod() {
System.out.println("BookRegisterService 빈(Bean)객체 생성 단계");
}
public void destroyMethod() {
System.out.println("BookRegisterService 빈(Bean)객체 소멸 단계");
}
메소드 2개를 만들어서
<bean id="bookRegisterService" class="com.brms.book.service.BookRegisterService" 
init-method="initMethod" destroy-method="destroyMethod"/>
빈 객체를 호출할때와 소멸될때에 불러올 메소드를 정의해주면 된다.

자기가 필요한 시점에만 정의해서 사용하면된다.