싱글턴 패턴 Singleton pattern이란?
클래스가 오직 하나의 인스턴스만 생성한다는것을 보장하는 패턴.
보통 데이터베이스나 웹 서비스 같은 여러 서드파티에서 해당 인스턴스에 접근가능한 유일한 지점을 만드는데 사용.
소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다.
Spring도 스프링 빈에서 한번 객체를 생성 해놓은 뒤, 필요시 스프링이 생성해놓은 객체를 호출해서 쓰기때문에 싱글턴 패턴을 따른다고 할 수 있다.
ex)싱글톤 패턴을 적용한 DAO클래스.
static변수에 인스턴스를 저장하고, 이를 반환한다.
처음 호출 시 인스턴스를 최초1번 생성하고, 그 이후에는 생성한 인스턴스를 반환하기만 한다.
이제 service 에서 직접 객체생성해 변수에 저장하지 않고, 싱글톤 패턴에 따라 의존관계가 있는 클래스의 메서드를 호출 해 인스턴스를 가져오기만 하면 된다.--> getInstance()
하지만 이렇게 하더라도 인스턴스를 가져오기 위한 메서드 호출을 매번 해줘야하는것은 변함이 없다.
싱글톤 패턴을 적용한다 하더라도 객체 생성을 하지 않는것이 아니라, 생성횟수를 1회로 한정시킨 것에 불과하다. 또한 실행할 메서드에는 사용하고자 하는 인스턴스가 null인지 모르기 때문에 메서드를 매번 호출 해야한다.
이러한 의존관계가 있는 인스턴스를 가지게(has-a)하는 작업을 개발자에게서 분리하는 것이
Spring DI (의존적 주입) 의 목적이다.
'Back-end > JAVA,Spring' 카테고리의 다른 글
마이바티스 란? mybatis 설정방법 및 순서. (0) | 2018.11.08 |
---|---|
[Spring]Application Context 설정. (0) | 2018.11.07 |
런타임(Runtime) vs 컴파일(Compile) (0) | 2018.10.29 |
J2EE란? 자바2 엔터프라이즈 에디션 (0) | 2018.10.22 |
[JAVA Spring] 첨부파일 구현하기. MulripartResolver. (0) | 2018.10.21 |