싱글톤 패턴

Ahn yi·2022년 10월 5일
0

spring

목록 보기
6/11

싱글톤패턴

  • 클래스의 인스턴스가 1개만 생성되는 것을 보장하는 디자인 패턴이다.
  • private 생성자를 사용하여 외부에서 new 키워드를 사용하지 못하도록 막는다.
  • 스프링 컨테이너가 싱글톤 패턴을 적용시켜준다.

싱글톤 패턴의 단점

  1. 코드 자체가 많이 들어간다.
  2. 클라이언트가 구체 클래스에 의존하여 DIP를 위반한다.
  3. 마찬가지로 OCP 원칙을 위반할 가능성이 높다.
  4. 속성 변경 및 초기화가 어렵다.
  5. getInstance()를 사용해야 하기 때문에 유연성이 떨어진다.
  6. private생성자로 자식 클래스를 만들기 어렵다.
    -> 스프링 프레임워크는 싱글톤 패턴의 단점을 제거하며 객체를 싱글톤 패턴으로 관리한다.

스프링 컨테이너

  • 스프링 컨테이너는 싱글턴 패턴을 적용하지 않아도, 객체를 싱글톤으로 관리한다.
    - 스프링이 관리해주기 때문에 코드가 많이 필요 없다.
    - DIP, OCP, private 생성자로부터 자유롭게 싱글톤을 사용할 수 있다.

싱글턴 패턴의 주의점

  • 무상태로 설계해야 한다.
    - 특정 클라이언트에 의존적이면 안된다.
    - 특정 클라이언트에 값을 변경할 수 있는 필드가 있으면 안된다.
    - 읽기만 가능하게 해야한다.
    - 필드 대신 지역변수, 파라미터 등을 사용해야한다.

    필드 선언 X!!

스프링 컨테이너

  • @Configuration이 바이트코드를 조작하는 기술을 사용하여 싱글톤이 보장된다.
    - @Bean이 붙은 매서드마다 빈의 존재 여부를 파악하여 기존의 빈 혹은 새로운 빈을 반환한다.
profile
소통을 잘하고싶은 백엔드 개발자

0개의 댓글