반응형
소개
Singleton 과 static의 차이를 설명하려고 한다.
이 글을 쓰게 된 이유: Singleton은 spring boot에서 bean의 개념이라고 다들 말하는데 객체를 하나만 생성한다는 것에 궁금증이 생겼다.
Static이랑 다를게 뭐지? 라는 생각이 들어 이 글을 쓰게 되었다.
SINGLETON vs STATIC
싱글톤(Singleton)과 static은 둘 다 객체나 메서드에 대한 개념이지만, 그 사용 목적과 동작 방식에서 차이가 있습니다.
목적: 클래스의 인스턴스가 오직 하나만 생성되도록 하는 디자인 패턴입니다. 주로 객체의 공유나 중앙 집중적인 관리를 위해 사용됩니다.
특징:
- 클래스의 인스턴스가 하나만 존재하므로, 여러 곳에서 해당 인스턴스에 접근하여 데이터를 공유할 수 있습니다.
- 주로 디자인 패턴으로 사용되며, Spring과 같은 프레임워크에서는 빈(Bean)으로 등록되어 싱글톤 스코프로 사용됩니다.
예제:
public class SingletonExample { private static SingletonExample instance; private SingletonExample() { // private 생성자로 외부에서의 인스턴스 생성을 막음 } public static synchronized SingletonExample getInstance() { if (instance == null) { instance = new SingletonExample(); } return instance; } }
목적: 클래스 레벨에 속하는 필드나 메서드를 나타냅니다. 객체의 생성과는 무관하게 클래스가 로드될 때 생성되어 클래스 내부에서 공유됩니다.
특징:
- 객체의 인스턴스와 무관하게 클래스 자체에 속하므로, 해당 클래스의 모든 인스턴스에서 동일한 값이 공유됩니다.
- static 키워드가 붙은 필드나 메서드는 클래스명으로 직접 접근할 수 있습니다.
예제:
public class StaticExample { public static int sharedValue = 0; public static void increment() { sharedValue++; } }
- 싱글톤은 주로 객체 인스턴스를 하나만 생성하여 여러 곳에서 공유할 때 사용되며, 디자인 패턴의 일종입니다.
- static은 클래스 레벨에 속하는 필드나 메서드를 나타내며, 객체와 무관하게 클래스가 로드될 때 생성되어 클래스 내에서 공유됩니다. 클래스의 인스턴스와 관련이 없는 경우에 사용됩니다.
- 각각의 사용 목적과 상황에 따라 싱글톤과 static을 적절히 선택하여 사용해야 합니다.
반응형
'개발 > Java' 카테고리의 다른 글
[Java] CustomException 설명 (0) | 2024.02.28 |
---|---|
[Java] 세 가지 주요 ORM 비교( jpa, ebean, hibernate ) (0) | 2023.12.15 |
[Java] error occurred during initialization of VM java/lang/noClassDefFoundError: java/lang/Object Error 원인 및 해결 방법 (0) | 2023.11.20 |
[Java] 자료구조의 시간복잡도와 공간복잡도 (1) | 2023.11.20 |
[Java] Jackson 라이브러리 사용법 Object to json (0) | 2023.10.26 |