728x90
반응형

singleton 3

[Java] Singleton Pattern

Singleton 싱글톤 객체가 유일하게 1개만 존재해야할 때 사용하는 패턴으로, 하나의 인스턴스만 생성하여 공유해서 사용합니다. 그래서 메모리의 낭비를 줄일 수 있습니다. 스프링에서는 @Bean을 싱글톤으로 관리합니다. Singleton Pattern 구현 package Java; public class Singleton { //인스턴스를 하나만 사용하기 위해 인스턴스 미리 생성 private static Singleton singleton = new Singleton(); //인스턴스를 생성하지 못하게 생성자를 private로 막는다. private Singleton(){} public static Singleton getInstance(){ //기존에 인스턴스가 생성되지 않은 상태라면 생성하기 if..

JAVA 2022.07.28

[Spring] @Configuration과 Singleton By CGLIB

궁금증 MemberService 1번 / TodoService 1번 / MemberRepository 3번 호출 된다고 생각했습니다. 결론적으로 MemberRepository가 3번 호출 되어 싱글톤이 깨질 수도 있다고 생각했습니다. @Configuration public class AppConfig { //차례대로 클래스를 빈에 등록하여 싱글톤을 보장한다고 가정하겠습니다. @Bean //1. MemberService 호출 public MemberService memberService() { //2. MemberRepository 호출 return new MemberServiceImpl(memberRepository()); } @Bean 3. TodoService 호출 public TodoService ..

Spring 2022.07.11

[Spring] Singleton 사용 시 필드 변수 사용 주의❗

개요 싱글톤 방식은 객체 인스턴스를 하나만 생성하여 그 인스턴스를 공유하기 때문에 클라이언트 들이 하나의 인스턴스에 접근을 합니다. 그런데 이때 인스턴스에 있는 필드 변수를 사용하게 되면 문제가 발생할 수 있습니다. 해결방법 싱글톤 방식은 무상태(stateless)로 설계 해야합니다. 1. 클라이언트에게 의존적인 필드가 있으면 안됩니다. 2. 클라이언트가 변경할 수 있는 필드가 있으면 안됩니다. 3. 가급적 필드에 대해 읽기만 가능해야 합니다. 4. 필드 대신 지역변수, 파라미터, ThreadLocal을 사용해야 합니다. 문제점에 대한 예시 필드를 사용하고 클라이언트가 직접 필드의 값을 변경하는 경우 //게임에서 점수를 측정하는 서비스 public class ScoreCheckService { priva..

Spring 2022.07.11
728x90
반응형