728x90
728x90
beanDefinition 자체가 인터페이스다. 언어나 뭐든 신경쓰지 않는다.
스프링 없이는 요청이 올 때 마다 객체를 새로 만든다.
메모리 낭비가 엄청나다.
해결방안: 객체가 하나만 생성되고 공유한다.
how : 두개 이상 생성하지 못하도록 막는다.
1. static영역에 객체 instance를 미리 하나 생성해서 올려둔다.
2. getInstance() 매서드를 통해서만 조회할 수 있다.
3. 생성자를 private로 막아둔다.
same ==
equal
스프링 컨테이너는 싱글톤으로 알아서 적용해서 바꿔준다.
객체 지향을 위한 여러 규칙, 코드의 깔끔함을 다 유지해준다.
주의점
무상태로 설계해야 한다.
값을 변경할 수 없어야한다. - 읽기만 가능해야 한다. !!!!! 중요 !!!!!!
값을 넣으면 바꿔치기가 된다.
어떻게 싱글톤이 유지되나?
임의의 다른 클래스가 싱글톤이 보장되도록 해준다.
등록이 되어있으면 찾아서 반환.
등록이 되어있지 않으면 기존 로직을 호출하여 생성 후 컨테이너에 등록
@Configuration이 지워지면 싱글 톤 보장을 하지 못한다.
728x90