반응형
자바 스프링을 사용하다보면 BeanScope, singletonScope등등 단어를 보고 그안에 scope라는 단어를 많이 접하게 된다.
여기서 Scope에 대해서 설명하려고 한다.
Scope라는 단어의 뜻은 '범위' 라는 의미를 갖고있다.
그리고 이 의미를 자바 스프링에 입힐때,
예를 들어 BeanScope라고 한다면 말 그대로 빈이 존재할 수 있는 범위를 뜻한다.
스프링은 다음과 같은 다양한 스코프를 지원한다.
- 싱글톤(Singleton) : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프
- 프로토타입(Prototype) : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 //prototype 참고 포스팅 내에 @Scope 존재
- 웹 관련 스코프
- request : 웹 요청이 들어오고 나갈 때까지 유지되는 스코프
- session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프
- application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프
각각의 의미에 대해서는 아래 참고 포스팅 참고 바란다.
Singleton 스코프는 스프링이 기동되고부터 종료되기 전까지 이다.
Bean이 Spring 서버 기동시 생성이 되고 종료하면서 삭제 되기 때문이다.
Prototype 스코프는 호출 시점에 실행이 되고 클라이언트가 종료를 하면 사라진다.
prototype은 참고 포스팅에서도 설명이 있지만 제어 자체를 DI를 통해 스프링이 갖는게 아닌, 사용자가 갖게 된다.
그러면서 제공되는 기술이 provider이다.
prototype와 DL/provider 관련 참고 포스팅을 참고하면 흐름이 더욱 이해 갈 것이다.
WebScope에 대해서는 추후에 따로 포스팅을 작성해보도록 할것이다.
참고 포스팅
https://thenicesj.tistory.com/640
https://thenicesj.tistory.com/641
https://thenicesj.tistory.com/639
반응형
'IT > Java' 카테고리의 다른 글
Lazy Bean 에 대해(lazy init / lazy loading) (47) | 2023.08.26 |
---|---|
SpringJDBC에서 DataSource, RowMapper란? (44) | 2023.08.24 |
[Spring] Devtools 이란? (23.08.19) (12) | 2023.08.20 |
[error] no qualifying bean of type available: expected at least 1 bean which qualifies as autowire candidate (41) | 2023.08.18 |
spring-boot-starter-web <dependency추가> (50) | 2023.08.17 |
댓글