스프링 컨테이너와 싱글톤의 관계

Inyeob Kim·2023년 3월 12일

스프링 컨테이너는 등록된 스프링 빈들을 모두 싱글톤으로 관리한다.

아래는 스프링 빈에 등록할 BookFactory 라는 클래스 구현 예시이다.

먼저 @Configurable을 통해 해당 클래스를 설정 정보로 인식하게 만들어준다. @Bean이 붙어있는 메서드의 반환값들을 하나하나 스프링 빈으로 등록한다.

BookFactory는 식별성이 필요없는 Service Aggregate이다.

이러한 Aggregate은 Singleton으로 작동하도록 구현했고 엔티티인 Book 인스턴스를 생성해주는 역할을 담당하는 Factory 역할을 하도록 했다.

마지막으로, 엔티티인 Book 구현 예시이다.

직접 new operator을 통해 인스턴스를 생성하지 않고 Factory 역할을 하는 BookFactory Bean를 통해 인스턴스를 생성한다. Transaction 내에 동일한 식별자를 갖는 엔티티는 반드시 1개만 만들어져야하고, 한 트랜잭션이 종료될때까지 유지된다.

결과

bookFactory와 bookFactory2의 메모리 주소가 똑같이 나온걸 알 수 있다! 스프링 컨테이너는 우리가 스프링빈에 등록되는 클래스를 싱글톤으로 만들어줄 필요도 없이 알아서 싱글톤으로 관리해준다.

profile
코어뱅킹 주니어 개발자

0개의 댓글