Prototype과 Singleton

바그다드·2023년 7월 13일

스프링 빈은 스프링에서 관리하는 객체를 뜻한다. 스프링 빈은 설정하는 값에 따라 스프링 컨테이너에서 빈을 관리하는 주기를 설정할 수 있는데, 이번에는 그 중에서도 가장 대표적인 두가지 Prototype과 Singleton의 차이에 대해서 알아보도록 하자.

Prototype VS Singleton

PrototypeSingleton
객체컨테이너에 여러 개의 빈이 있을 수 있음컨테이너당 하나의 빈만 존재
Bean빈이 참조될 때마다 새로운 빈을 생성이미 생성된 빈을 재사용
기본값XO
적용방법@Scope(value =
ConfigurableBeanFactory.SCOPE_PROTOTYPE)
따로 명시하지 않아도 됨
@Scope(value =
ConfigurableBeanFactory.SCOPE_SINGLETON)
Recommended for내가 작성한 코드를 빈으로 등록할 때
대부분의 경우 @Component가 권장됨
1: 특정 비즈니스 로직을 생성할때
2: 제3자 라이브러리 bean을 인스턴스화 할 때
사용빈도가끔 사용대부분 사용
상황에 따른 적용사용자 정보가 유지되는 Bean을 생성할 때정보가 Stateless(유지되지 않는) Bean을
생성하고자 할 때
  • 이 두가지 외에도 다른 타입이 있는데 그건 아래 링크를 참고하도록 하자
    빈 스코프

Java Singleton vs Spring Singleton

자바에서 말하는 싱글톤과 스프링에서 말하는 싱글톤은 무엇이 다른걸까?

  • 스프링
    스프링 IoC 컨테이너당 하나의 객체만 있어야 함
  • 자바
    JVM 안에 하나의 객체만 있어야 함

대부분의 경우 JVM 하나에는 하나의 Spring 컨테이너가 실행되기 때문에 대부분의 경우 둘이 말하는 싱글톤은 다를바가 없다.
다만, 만약에 JVM에 둘 이상의 Spring컨테이너가 실행되고 있다면 Java Singleton과 Spring Singleton은 달라진다.
하지만 말했듯이 대부분의 경우 하나의 jvm에 하나의 spring컨테이너만 실행하게 되므로 참고만 하자.

profile
꾸준히 하자!

0개의 댓글