Spring & Spring Boot(2)
-
스프링 컨테이너(Spring Container) 및 설정 파일
스프링 프레임워크의 동작 원리를 알기 위해서는 스프링 프레임워크 설정 파일들에 대한 이해가 필요하다. 스프링 프레임워크에 대해 알아보기 전에 서블릿 컨테이너에 대한 사전 이해가 있어야지 해당 내용을 이해하는 데 수월하다. 서블릿 컨테이너 관련된 포스팅을 참조하길 바란다. 이번 포스팅은 스프링 프레임워크 동작 원리를 이해하기 위한 스프링 설정 파일에 대한 포스팅이다. 우선 스프링 설정 파일의 가장 기본이 되는 파일은 web.xml, servlet-context.xml, applicationContext.xml 이다. web.xml (배포서술자) web.xml은 배포 서술자라고 하며 WAS(톰켓) 가동시 WEB-INF 하위에 있는 web.xml을 읽고, 웹 어플리케이션 설정을 구성한다. 스프링 프레임워크를 ..
2022.02.07 -
[스프링] 싱글톤 방식의 주의점 - 스프링 빈은 항상 무상태(stateless)로 설계하자
스프링 싱글톤 방식으로 설계시 주의해야할 사항이 있다. 스프링 빈을 항상 무상태(Stateless)로 설계하는 것이다. 간단히 말하자면 스프링 빈으로 등록되는 클래스는 공유가 될 수 있는 전역 변수를 사용하지 말아야 한다는 것이다. 싱글톤으로 빈 객체를 관리하는 스프링 컨테이너의 특성상 빈에 멤버변수를 두게 되는 경우 해당 멤버변수에 들어간 값이 다른 곳에서 상태를 유지(Stateful)한 채 재사용된다는 문제점이 있다. 이렇게 될 경우 서로 다른 요청에 따라 스레드 별로 각자의 스택 메모리 영역을 차지한다 하더라도 스프링 컨테이너가 동작함에 따라 이미 힙 영역에 빈 객체가 로딩되어 공유되기 때문에 빈 객첼을 Stateful한 상태로 설계할 경우 서로 다른 요청임에도 불구하고 값이 꼬여버리는 경우가 발생..
2021.12.08