본문 바로가기
IT/Java

[Java] Scope란?

by 성준하이 2023. 8. 23.
반응형

자바 스프링을 사용하다보면 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

 

Spring 에서 Singleton

singleton 패턴에 대해서는 아래 참고 포스팅을 참고 바란다. spring 에서의 기능중 하나는 의존성 주입인 DI 가 있다. 자세한 내용은 아래 참고 포스팅 참고바란다. 스프링에서는 컨테이너 위에 Bean

thenicesj.tistory.com

https://thenicesj.tistory.com/641

 

Spring prototype Bean

Java Spring을 사용할 경우 Bean 을 Spring 위에 Singleton 으로 올리는것에 대해서는 이전 포스팅에서 다룬적이 있다. Singleton 에 대해서는 아래 참고 포스팅을 참고 바란다. 이번 포스팅에서 다룰 내용인

thenicesj.tistory.com

https://thenicesj.tistory.com/639

 

Spring DL 이란?(Dependency Lookup)

이전 포스팅에서 스프링의 특징들에 대해 다룬적이 있다. AOP, DI 등 내용이었고 자세한 것은 아래 참고 포스팅 참고 바란다. 이번 포스팅에서는 비슷하지만 좀 다른 DL(Dependency Lookup) 에 대해서 다

thenicesj.tistory.com

 

반응형

댓글