스프링 핵심 원리 이해 7 - 프로토타입 스코프
빈 스코프란?
스프링에서 지원하는 스코프
싱글톤: 기본! 지금까지 진행한 스코프. 스프링 컨테이너의 시작~종료를 모두 아우르는 가장 넓은 범위.
프로토타입: 프로토타입 빈의 생성과 의존관계 주입까지만 관여.
웹 관련 스코프
- request: 웹 요청이 들어오고 나갈때까지
- session: 웹 세션이 생성되고 종료될 때까지
- application: 웹의 서블릿 컨텍스와 같은 범위로
프로토타입 스코프
스프링 컨테이너는 프로토타입 빈을 생성하고, 의존관계 주입, 초기화까지만 처리!
→ 프로토타입 빈을 관리할 책임은 클라이언트에게 있음, 종료 메서드 호출 X
→ 종료 메서드 호출도 클라이언트가 직접!
프로토타입 스코프 with 싱글톤 빈
프로토타입 빈을 그냥 넣게 되면 우리가 의도된 대로 나오지 않을 수 있음.
(주입된 시점에 프로토타입 빈을 넣어둔 상태로 두는 것. 사용할 때마다 새로 생성하는 의미로 구성 X)
→ 우리가 원하는 방식은 프로토타입 빈을 주입 시점에만 새로 생성하는게 아니라, 사용할 때 마다 새로 생성해서 사용하는 것!
Provoder로 해결
1. ObjectFactory, ObjectProvider (ObjectProvider가 Factory를 상속한 것.)
getObject()를 호출해서 반환 가능, 스프링에 의존함.
2. Provider
get을 호출해서 반환 가능. 별도 라이브러리 필요, 자바 표준이므로 다른 컨테이너에서도 OK
→ 사실 실무에서는 프로토타입 빈을 쓰는 경우는 매우 드물지만, 대체로 ObjectProvider가 편리하고, 다른 컨테이너에서도 사용해야된다면 Provider를 사용한다.
http request가 들어와서 나갈때까지가 범윈데 http request가 없어서 에러가 남.
'프로그래밍 공부 > Spring' 카테고리의 다른 글
[Spring] @RequestMapping (8) | 2022.04.20 |
---|---|
[Spring] JsssionID란? (0) | 2022.02.16 |
스프링 스터디 기본편 -6 (0) | 2021.04.26 |
스프링 스터디 기본편 -5 (0) | 2021.04.25 |
스프링 스터디 기본편 - 4 (0) | 2021.04.25 |