공부일기

2021.01.15 (금)

  • 스프링 강의 듣기

 

 

 

spring keyword


* 빈 스코프란?

빈이 존재할 수 있는 범위

 

* 빈의 다양한 스코프

- 싱글톤 : 기본 스코프. 스프링 컨테이너의 시작~종료

- 프로토타입 : 빈의 생성과 의존관계 주입까지만 관여

- 웹관련 스코프

  request : 웹 요청이 들어오고 나갈때 까지의 스코프

  session : 웹 session이 생성되고 종료될 때 까지의 스코프

  application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 (?)

 

 

* 정리

싱글톤 빈을 요청하면 스프링 컨테이너는 이미 만들어진 동일한 빈을 계속 반환해준다.

그런데 프로토타입 빈을 요청하면 요청 한 당시에 생성되고 의존관계주입이 되고, 초기화메소드까지 실행 후 반환해준다. 그리고 끝이다. 스프링 컨테이너에서 계속 보관하고 있지 않다.

 

핵심은 프로토타입 빈을 요청하면 생성,의존관계주입,초기화 만 된다는 것이다.

= 종료메소드 @PreDestroy 가 호출되지 않는다.

->만약 데이터베이스 커넥션을 사용한다면 스프링에서 관여하지 않으니 직접 닫아주어야 한다.

 

 

* 싱글톤 빈과 프로토타입 빈을 같이 사용할때

상황 : 싱글톤 빈이 생성되면서 프로토 타입 빈을 생성하고 싱글톤 빈의 로직 중에 프로토타입 빈을 사용하는 로직이 있을 때

 

싱글톤 빈에 있는 프로토타입 빈을 이용하는 로직을 사용해도 프로토타입 빈이 계속 생성되는 것이 아님.

싱글톤빈이 생성되면서 프로토타입 빈을 생성했고 싱글톤 빈 안에 살아있기 때문이다.

 

문제 : 프로토타입 빈을 사용하는 의도는 빈을 계속 생성하며 사용하고 싶은 의도인데 의도대로 수행이 안될 수 있음

 

해결 : 

 

'공부일기' 카테고리의 다른 글

2021.01.21 (목)  (0) 2021.01.21
2021.01.20 (수)  (0) 2021.01.21
2021.01.14 (목)  (0) 2021.01.14
2021.01.13 (수)  (0) 2021.01.13
2021.01.12 (화)  (0) 2021.01.12