싱글톤 패턴은
클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다.
싱글톤 패턴은 private 생성자를 사용해서, 외부 클래스에서 임의로 new 키워드를 통해
객체 생성 하는 것을 막는다.
싱글톤 패턴을 적용한 서비스를 한번 구현해보자.
자기 자신을 내부에 private으로 가지고 있다.
static은 클래스 레벨에 존재하기 때문에 단 하나만 존재하기 때문에 선언한다.
private 생성자를 이용하여 다른 클래스에서 singletonservice를 부르려는 것을 막는다.
하지만 이러한 구현을 일일이 할 필요없이 스프링 컨테이너를 쓰면 객체를 싱글톤으로 만들어 관리해준다.
기존에 있는 객체를 재활용하여 성능 향상한다는 장점이 있다.
[싱글톤 패턴의 단점]
- 싱글톤 패턴을 구현하는 코드 자체가 많이 들어간다.
- 의존관계상 클라이언트가 구체 클래스에 의존한다. DIP를 위반한다.
-> 싱글톤을 불러올 때 구체클래스.getInstance() 이런식으로 불러와 구체클래스에 의존하기 때문이다.
-> 클라이언트가 구체 클래스에 의존하게 된다.
- 클라이언트가 구체 클래스에 의존해서 OCP 원칙을 위반할 가능성이 높다.
- 안티패턴으로 불리기도 한다.
'💻 Backend > 스프링' 카테고리의 다른 글
JPA, JPQL에서 limit 사용하기 (0) | 2022.01.24 |
---|---|
싱글톤 컨테이너란? (0) | 2022.01.23 |
싱글톤이란? (0) | 2022.01.23 |
@RestController vs @Controller (0) | 2022.01.11 |
HTTP 요청 파라미터 - @RequestParam (0) | 2022.01.10 |