[Spring] 싱글톤, 무상태(stateless)로 설계하라! [Singleton 패턴 주의사항]
·
▣ Framework/Spring🍃
- 싱글톤, 무상태(stateless)로 설계하라! 객체 인스턴스를 하나만 생성해서 공유하는 싱글톤 방식은 여러 클라이언트가 하나의 같은 객체 인스턴스를 공유하기 때문에 싱글톤 객체는 상태를 유지(stateful)하게 설계하면 안된다. - 잘못된 설계 : 상태가 유지되는 경우 - StateFulService.java public class StateFulService { private int price; // 상태를 유지하는 필드 public void order(String name, int price) { System.out.println("name = " + name + " price = " + price); this.price = price; // 여기가 문제! } public int getPric..
[GoF] Singleton 패턴 : 인스턴스를 단 하나만 만든다 [인스턴스가 하나만 존재하는 것을 보증하는 패턴]
·
◈ Study/디자인패턴(GoF)🥞
- Singleton 패턴 : 인스턴스를 단 하나만 만든다 Singleton 패턴은 인스턴스가 하나만 존재하는 것을 보증하는 패턴이다. - 어떤 경우에 사용할까? Singleton 패턴에서는 인스턴스 수를 제한하고 있다. 인스턴스가 여러 개면 인스턴스가 서로 영향을 미쳐 뜻밖의 버그를 만들어 낼 수 있으나, 인스턴스가 하나뿐이라는 보장이 있다면 인스턴스 간 영향이 최소화 될 수 있다. - 예제 코드 이름 설명 Singleton 인스턴스가 하나만 존재하는 클래스 Main 동작 테스트용 클래스 - Singleton 클래스 public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() { Syst..
[Spring] bean 태그의 scope 사용법 [singleton과 prototype 차이]
·
▣ Framework/Spring🍃
[Spring] Beans Graph 확인 및 context 사용[IoC(Inversion of Control) 실습하기] 1. IoC(Inversion of Control)란? '제어역행'이라 불리며, IoC가 적용되면 객체는 의존하는 다른 객체를 생성 및 찾는 대신 수동적으로 의존성을 받는다. 스프링 프레임워크는 제어역행(IoC)을 통해 애플리 yermi.tistory.com - bean 태그의 scope 사용법 - scope : singleton - scope : prototype
[Board] MVC 디자인 패턴, 싱글턴(Singleton) 적용 [콘솔 출력에서 웹 페이지 출력으로 변경하기]
·
◈ Human Project/Custom : Board📖
[Board] DB 연동 : 게시글 세부조회 기능[BoardDao.get() : 게시글 세부조회 기능 구현] [Board] DB 연동 : 댓글 테이블 생성, CRUD 기능 구현[댓글 테이블 및 로우데이터 생성, 댓글 관련 CRUD [Board] DB 연동 : 로그인, 로그아웃 기능[계정 로그인, 로그아웃 기능 구현 및 계정 기능 설계] [Board yermi.tistory.com 1. MVC 디자인 패턴 적용 2. 싱글턴(Singleton) 적용 - BoardService public class BoardService { private static BoardService boardService = new BoardService(); public static BoardService getInstance()..
[Mini Project] Library Service : 로우 데이터(Singleton 활용)
·
◈ Human Project/Mini : Library Service📚
- Library Service : 로우 데이터(Singleton 활용) // Singleton: 기본데이터 저장 private static LibServiceImpl libServiceImpl = new LibServiceImpl(); private LibServiceImpl() { } public static LibServiceImpl getInstance() { // Singleton 생성 return libServiceImpl; } // 싱글턴 변수 private List books = new ArrayList(); // Book data private List lBooks = new ArrayList(); // LibBook data private List users = new ArrayList..