Spring Singleton

2020. 5. 1. 15:18Java/Spring

Spring Singleton 패턴의 특징

 우리가 일반적으로 알고 있는 Java Singleton은 생성자를 private으로 선언하고 참조 변수를 static을 정의하는 것을 이용해 Classloader가 하나의 인스턴스만 만들도록 구현합니다. 하지만 Spring Singleton은 Classloader가 아니라 Spring Container에 의해 구현됩니다. 컨테이너 내에서 특정 클래스에 대해 @Bean, @Component가 정의되면, Spring Container는 그 클래스에 대해 한 개의 인스턴스만 만듭니다. 이 공유 인스턴스는 설정 정보에 의해 관리되고, Bean이 호출될 때마다 Spring은 생성된 공유 인스턴스를 리턴합니다.
 여기서 Spring Container에 의해 구현되는게 어떤 차이가 있는지 궁금할 수도 있습니다. Spring Container란 간단하게 말해서 하나의 Application Context라고 할 수 있습니다. 아래 그림을 참조하면 하나의 DispatcherServlet안에 여러 WebApplicationContext들이 존재할 수 있습니다. 여기서 이 각각의 ApplicationContext 내부에 구현된 빈들은 본인이 구현된 ApplicationContext만이 Singleton 범위가 되는 것입니다. 즉, 서로 다른 ApplicationContext에 구현된 빈들은 서로 참조가 불가능 하다는 말입니다.

728x90

'Java > Spring' 카테고리의 다른 글

Spring Boot  (0) 2020.06.09
Transaction Template  (1) 2020.05.07
@ExceptionHandler  (0) 2020.04.26
AOP  (0) 2020.04.18
@Transactional  (0) 2020.04.17