스프링

Spring bean scope

코드 죄수 2022. 10. 26. 13:33

 

singleton 하나의 Bean 정의에 대해서 Spring IOC Container 내에 단 하나의 객체만 존재한다.
prototype 하나의 Bean 정의에 대해서 다수의 객체가 존재할 수 있다.
request 하나의 Bean 정의에 대해서 하나의 HTTP request의 생명주기 안에 단 하나의 객체만 존재한다.
즉 각각의 HTTP request는 자신만의 객체를 가진다.
Web-aware Spring ApplicationContext 안에서만 유효하다.
session 하나의 Bean 정의에 대해서 하나의 HTTP Session의 생명주기 안에 단 하나의 객체만 존재한다.
Web-aware Spring ApplicationContext 안에서만 유효하다.
global session 하나의 Bean 정의에 대해서 하나의 global HTTP Session의 생명주기 안에 단 하나의 객체만 존재한다. 일반적으로 portlet context안에서 유효하다.
Web-aware Spring ApplicationContext 안에서만 유효하다.

singleton이 default이다.

 

singleton은 객체 생성시 어디서 부르든 같은 객체를 참조할 수 있도록 해주는것

 

prototype은 객체 생성시 어디서 부르든 다른 객체를 참조할 수 있도록 해주는것

 

request는 각각의 요청마다 다른 객체를 생성 하여 요청이 들어오고 나갈때 까지만 유지됨

 

session 브라우저가 서버에 최초의 요청을 보낼때 Bean객체가 주입된다.

그 이후엔 주입이 되지 않음 한번 주입된 객체를 계속 사용한다.

Bean을 주입만 해줄뿐 session에 저장되지는 않는다.

 

global session 포틀릿 기반의 웹 어플리케이션 용도로 전역 세션스코프가 빈과 같은 스프링 MVC를 사용한 포탈 애플리케이션 내의 모든 포틀릿 사이에 공유를 할 수 있습니다.

 

portlet이란?

포틀렛은 웹 기반 콘텐츠, 응용프로그램 및 기타 리소스에 대한 액세스를 제공하는 재사용 가능한 웹 모듈이다