프로그래밍/Spring
싱글톤 패턴
Baesj
2021. 9. 12. 14:02
싱글톤 패턴
- 클래스의 인스턴스가 1개만 생성되는 것을 보장하는 디자인 패턴
- 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야함
싱글톤 방식의 주의점
- 무상태(stateless)로 설계해야함
: 특정 클라이언트에 의존적인 필드가 없어야함
: 특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안됨
: 가급적 읽기만 가능
- 스프링 빈의 필드에 공유 값을 설정하면 장애가 발생할 수 있다
싱글톤 방식의 문제점
- 멀티스레딩 환경에서 발생할 수 있는 동시성 문제 해결을 위해 syncronized 키워드를 사용해야 한다.
- 테스트하기 어렵다.
:격리된 환경에서 수행되려면 매번 인스턴스의 상태를 초기화시켜주어야 한다. 그렇지 않으면 어플리케이션 전역에서 상태를 공유하기 때문에 테스트가 온전하게 수행되지 못한다.
- 클라이언트가 구체 클래스에 의존하게 된다.
: DIP를 위반하게 되고 OCP 원칙 또한 위반할 가능성이 높다.
참고
사이트 : https://tecoble.techcourse.co.kr/post/2020-11-07-singleton/