스프링을 공부하다가, Scope 라는 빈의 라이프사이클에 대한 내용을 공부했는데 상당히 흥미로운 내용을 발견했다.
실제로 프로젝트를 진행하면 포틀릿 관련된 내용을 자주 접할 수 있었다. 도대체 이게 뭐시당가 라면서 고민했지만 하던대로 코딩해도 문제가 없었으니 넘어갔던 기억이 난다.
하지만 여기서 이걸 볼 줄이야...
내용은 다음과 같다.
0. Scope 정의는 기본적으로 Bean 생성 및 소멸을 어떻게 할 것인가? 그것에 대한 정의라고 볼 수 있다.
1. 스프링에서 Bean 정의를 할 때, 특정 목적에 맞도록 Scope 정의를 할 수 있다.
2. 싱글턴, 프로토타입 같은 기본적인 정의가 존재한다.
3. 웹에서 사용하는 Request, Session 또한 Bean Scope 일부다.
4. Global Session 방식은 포틀릿 기반 웹 앱에서 사용하며, MVC 기반 앱 내 모든 포틀릿 간 공유가 가능하다. !!!
5. Thread 요청이 있을 경우 새로운 빈 인스턴스를 생성하고 반환되며, 동일한 Thread 한해서만 동일한 빈이 제공된다.
4번을 보면 Global Session 이라는 방식을 사용한다면 모든 포틀릿 간 실시간으로 공유가 가능하며 작업을 할 수 있다.
이 방식은 대규모 앱 제작 시, 실시간으로 적용되고 변경되는 앱 상태를 확인하며 눈으로 보면서 작업할 수 있는 앱 제작용 앱에서 확인할 수 있었다.
하도 싱글턴에 대한 이야기가 많아서 그게 핵심이고 전부인 줄 알았는데, 앱 자체가 고도화되고 특수한 목적을 달성하기 위해서 제작된 경우에는 싱글턴 보다는 다른 Scope 선택하는 비중이 훨씬 높은 것 같다.
'Back > Java' 카테고리의 다른 글
에러를 대처하는 것은 불가능하다. 단지 예외만 다룰 뿐이다. (0) | 2023.10.12 |
---|---|
try-with-resources 간략하게 알아보기 (0) | 2023.10.12 |
예외 처리 시, try - catch - if 대신 optional 사용해보기 (0) | 2023.04.22 |
회계 같은 정교한 계산이 필요한 경우에는 BigDecimal이 필수다 (0) | 2023.04.22 |
map에서 null을 배제하고 싶다면? (0) | 2023.04.08 |