프로그래밍/Spring

싱글톤 패턴

Baesj 2021. 9. 12. 14:02

싱글톤 패턴

 - 클래스의 인스턴스가 1개만 생성되는 것을 보장하는 디자인 패턴

 - 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야함

 

객체를 계속 생성한다
객체를 계속 생성하지 않고 공유한다


싱글톤 방식의 주의점

 - 무상태(stateless)로 설계해야함

 : 특정 클라이언트에 의존적인 필드가 없어야함

 : 특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안됨

 : 가급적 읽기만 가능

 - 스프링 빈의 필드에 공유 값을 설정하면 장애가 발생할 수 있다

 

싱글톤 방식의 문제점

 - 멀티스레딩 환경에서 발생할 수 있는 동시성 문제 해결을 위해 syncronized 키워드를 사용해야 한다.

 - 테스트하기 어렵다.

 :격리된 환경에서 수행되려면 매번 인스턴스의 상태를 초기화시켜주어야 한다. 그렇지 않으면 어플리케이션 전역에서 상태를 공유하기 때문에 테스트가 온전하게 수행되지 못한다.

 - 클라이언트가 구체 클래스에 의존하게 된다.

 : DIP를 위반하게 되고 OCP 원칙 또한 위반할 가능성이 높다.

 

참고

사이트 : https://tecoble.techcourse.co.kr/post/2020-11-07-singleton/

강의 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

'프로그래밍 > Spring' 카테고리의 다른 글

@Validated 테스트 코드 작성  (0) 2021.11.01
Spring 이해  (0) 2021.09.06
Spring과 Spring Boot 차이점  (0) 2021.09.05