김찬진의 개발 블로그
[23/04/05] 왜 스프링은 싱글톤으로 빈을 만드는 것일까? 본문
토비 Vol1 p.105
GPT에게 물어봄.
내가 모르는 개념들이 나와서 나중에 다시 돌아와서 공부하자.
싱글톤 패턴은 객체를 오직 하나만 생성하도록 보장하여 자원을 효율적으로 관리할 수 있게 해주는 패턴입니다. 그러나 싱글톤 패턴에는 여러 가지 문제점이 있습니다. 예를 들어, 상태가 있는 객체에 대해서는 상태가 공유되는 문제가 발생할 수 있으며, 의존성이 있는 객체들 간의 결합도가 높아져 유연성이 떨어질 수 있습니다. (응집도와 결합도를 구분하자)
스프링은 이러한 문제점을 해결하기 위해 빈(Bean)을 싱글톤으로 만듭니다. 스프링에서는 컨테이너가 빈의 생성과 소멸을 담당하며, 스프링에서는 빈을 싱글톤으로 만들어 관리합니다. 이를 통해 객체를 여러 개 생성하는 문제와 메모리 누수 등의 문제를 방지할 수 있습니다.
또한 스프링에서는 싱글톤 빈이라고 해서 반드시 상태가 공유되는 것은 아닙니다. 스프링에서는 싱글톤 빈의 상태를 공유하지 않도록 하는 방법들을 제공합니다. 예를 들어, 빈 스코프(Scope)를 지정하여 요청(Request), 세션(Session) 등의 범위를 갖게 하거나, ThreadLocal을 사용하여 각 스레드별로 고유한 상태를 갖게 할 수 있습니다.
따라서, 스프링에서 빈을 싱글톤으로 만드는 것은 객체 생성 및 자원 관리를 효율적으로 하기 위한 것이며, 스프링에서는 싱글톤 빈을 사용하면서도 상태 공유 등의 문제점을 해결할 수 있는 방법들을 제공하고 있습니다.
'1일1배움 > Spring (김영한 님)' 카테고리의 다른 글
[23/04/11] BeanFactory, ApplicationContext, IoC Container의 차이 (0) | 2023.04.11 |
---|---|
[23/04/05] 그럴 바에 스태틱 필드와 메소드로만 구성된 클래스를 사용해라 (0) | 2023.04.05 |
[23/04/05] 의존관계주입, 의존관계검색 (0) | 2023.04.05 |
[23/04/04] extends와 객체 생성의 차이 (0) | 2023.04.04 |
[23/04/04] 만약 이미 UserDao가 다른 목적을 위해 상속을 사용하고 있다면 어쩔 것인가? (0) | 2023.04.04 |
Comments