본문 바로가기

강의 내용 정리/스프링 핵심 원리 기본

8-1. 빈 생명주기 콜백 시작

빈이 생성되거나 죽기 전에 스프링이 빈 안의 메서드를 호출해주는 기능.

 

빈이 생성되고 초기화 할 때 호출하고, 빈이 소멸하기 일보직전에 안전하게 종료할 수 있게하는 메서드를 호출해준다.

 

 

 

 

ApplicationContext <- ConfigureableApplicationContext <- AnnotationConfigApplicationContext

              X                                           O                                                         O

(close() 메서드는 ConfigurealbeApplicationContext 부터 있다.)

보통 직접 close 할 일이 없기 때문에 기본 ApplicationContext에서는 지원하지 않는다.

 

 

1. networkClient를 빈으로 등록 할 때 생성자를 호출한다.

2. 이 떄는 아직 url 값을 세팅하지 않음. 

3. 객체를 생성한 다음 외부에서 setUrl()이 호출되어야 url이 존재한다.

 

 

빈 초기화 : 단순히 객체를 생성하는 작업이 아니라 객체 안에 필요한 값이 다 연결되어있는 상태

 

결과가 이상한 이유 : null이 들어가 있다. ( 당연하게도 )

생성자 주입은 1. 객체 생성, 2. 의존관계 주입 동시에 일어난다.

1. 객체 생성 

2. 의존관계 주입

<초기화 콜백>

3. 필요한 데이터 사용

<소멸전 콜백>

4. 스프링 종료

<의존관계 주입> 단계에서 필드주입, setter주입이 일어남.

그러나 생성자주입은 스프링 빈 생성 시 일어남. ( 객체를 생성해야되기 때문에 )

 

그러면 생성자에 다 박으면 안되나???

 

-> 기본적으로 new해서 객체를 생성하는 것과 초기화는 분리하는 것이 좋다.

-> 장점 : 생성만 해놓고 기다리다가 최초의 액션이 주어지면 그제서야 초기화하기.( 동작 지연 )

 

 

 

생성자 안에서 해도되는 것 : 객체 내부의 값을 세팅

안되는 것 : 무거운작업, 외부연결맺기 -> 별도의 초기화 메서드로 뺀다.

 

Recent Posts
Popular Posts
Recent Comments