- 스프링 강의 듣기
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 |