[Spring Basic] 스프링 싱글톤BE/Spring2024. 1. 18. 22:57
Table of Contents
싱글톤 패턴
- 클래스의 인스턴스가 1개만 있는 것을 보장하는 디자인 패턴
package hello.core.singleton;
public class SingletonService {
//1. static 영역에 객체를 딱 1개만 생성해둔다.
private static final SingletonService instance = new SingletonService();
//2. public으로 열어서 객체 인스턴스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용한다.
public static SingletonService getInstance() {
return instance;
}
//3. 생성자를 private으로 선언해서 외부에서 new 키워드를 사용한 객체 생성을 못하게 막는다.
private SingletonService() {
}
public void logic() {
System.out.println("싱글톤 객체 로직 호출");
}
}
구현 방법
- static final 인자로 불변의 인스턴스를 생성
- 생성자를 private 로 선언하여 외부에서의 객체 생성을 막는다
- 하나만 존재하는 instance 를 제공하기 위해 getInsatance 함수를 생성한다.
장점
- 서버 생성시에 만들어지기에 요청 처리가
- 객체 하나만을 생성하기에 메모리를 아낄 수 있다.
- 다른 인스턴스와 데이터 공유가 편하다 (다 싱글톤이면 다 전역)
하지만 단점 많다
- 싱글톤 패턴 구현 코드가 손이 많이감
- 의존 관계상, 클라이언트가 구체에 의존한다
- 테스트 하기 어렵다
- 내부 속성 변경과 초기화가 어렵다.
- private 생성자 때문에 자식 클래스 만들기가 어렵다
- 유연성이 떨어진다.
이런 많은 단점 있지만
스프링이 다 해결해준다.
스프링에서는 기본이 싱글톤 컨테이너이다.
다음 강의 내용을 기반으로 정리했습니다.
https://www.inflearn.com/course/스프링-핵심-원리-기본편
'BE > Spring' 카테고리의 다른 글
[Security] 스프링 시큐리티 (0) | 2024.02.27 |
---|---|
[Spring Basic] 스프링 컨테이너와 빈 (0) | 2024.01.18 |
[Spring Basic] IoC와 DI (0) | 2024.01.18 |
[Spring Basic] 객체 지향 설계와 스프링 (0) | 2024.01.18 |