티스토리 뷰

카테고리 없음

Bean Scope[Spring]

박강균 IT 2021. 4. 6. 16:29

 

Bean 정의를 통해 객체에 다양한 종속성 및 설정값(exConstructor,property...) 등을 주입할 수 있을 뿐 아니라, 객체의 범위(scope)를 정의할 수 있습니다.  정의할 수 있는 scope값으로는 크게 5개가 있습니다.  요약해서 정리하면 

singletone:하나의 Bean 정의에 대해서 Spring IoC Container 내에 단 하나의 객체만 존재한다.

prototype:하나의 Bean 정의에 대해서 다수의 객체가 존재할 수 있다

request:하나의 Bean 정의에 대해서 하나의 HTTP request의 생명주기 안에 단 하나의 객체만 존재한다; 즉, 각각의 HTTP request는 자신만의 객체를 가진다. Web-aware Spring ApplicationContext 안에서만 유효하다

session:하나의 Bean 정의에 대해서 하나의 HTTP Session의 생명주기 안에 단 하나의 객체만 존재한다. Web-aware Spring ApplicationContext 안에서만 유효하다.

globalsession :하나의 Bean 정의에 대해서 하나의 global HTTP Session의 생명주기 안에 단 하나의 객체만 존재한다. 일반적으로 portlet context 안에서 유효하다. Web-aware Spring ApplicationContext 안에서만 유효하다.

 

Singletone

Bean이 singleton인 경우, 단지 하나의 공유 객체만 관리됩니다.

Singletone은 Bean Scope의 기본값입니다.  싱글톤객체를 참조하는 bean이라면 모두 같은 scope안에 존재합니다. 

예를들어 Bean의 스코프를 싱글톤으로 하고, <ref>를 써서 다른 bean들이 해당 싱글톤 객체를 참조하면 

모두 같은 scope안에 존재해서 equals문을 씀녀 같다고 나올 겁니다. 

prototype

Singleton이 아닌 prototype scope의 형태로 정의된 bean은 필요한 매 순간 새로운 bean 객체가 생성됩니다.

싱글톤과 달리 protype으로 bean설정되어있으면 전부 다른 scope에 존재합니다. 

마찬가지로 Bean의 스코프를 프로토타입으로 하고 다른 Bean객체들이 이 참조를 한다면 

모두 다른 주소값을 가져서 equalus문을 쓰면 같지 않다고 나옵니다. 

 

request

HTTP의 request 즉 요청에 대한 처리가 끝나고 나면 Bean이 scope에서 사라집니다. 

session

HTTP의 session 즉 http가 살아있는한 scope안에  Bean이 존재합니다. 

globalsession

global session scope은 HTTP Session scope과 비슷하지만 단지 portlet-based web 어플리케이션에서만 사용할 수 있다. Portlet 명세(specifications)는 global Session을 하나의 portlet web 어플리케이션을 구성하는 여러 portlet들 모두가 공유하는 것으로 정의하고 있다. global session scope으로 설정된 bean은 global portlet Session의 일생에 한정된다.

라고하네요 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함