
스프링 핵심원리 - 기본편[8] 빈 생명주기 콜백
스프링 핵심원리 - 기본편[9] 빈 스코프
팀스터디
카페 쿠폰 도장 비유
클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다.
단 하나의 유일한 객체를 만들기 위한!
전역변수와 비슷하다고 생각하면 된다.
package hello.core.singleton;
public class SingletonService {
//1. static 영역에 객체를 딱 1개만 생성해둔다.
private static final SingletonService instance = new SingletonService();
//2. public으로 열어서 객체 인스턴스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용한다.
public static SingletonService getInstance() {
return instance;
}
//3. 생성자를 private으로 선언해서 외부에서 new 키워드를 사용한 객체 생성을 못하게 막는다.
private SingletonService() {
}
public void logic() {
System.out.println("싱글톤 객체 로직 호출");
}
}
싱글톤 패턴 문제점
해결방안

모두 다 같이 쓰는거기 때문에 가급적 읽기만 가능하게 깨끗히 써야해.
특정 클라이언트에 의존적인 필드가 있으면 안된다.
스프링 빈의 필드에 공유 값을 설정하면 정말 큰 장애가 발생할 수 있다!!!
EX) 같은 객체를 사용하다보니 공유 필드를 쓰면 만원 결제 한게 2만원으로 찍힌다던가하는 문제가 발생할 수도 있다.
package hello.core.singleton;
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 getPrice(){
return price;
}
}
package hello.core.singleton;
public class StatefulService {
// private int price;
public int order(String name, int price) {
System.out.println("name = " + name + " price= " + price);
// this.price = price;
return price;
}
// public int getPrice(){
// return price;
// }
}
멘토링 QnA
질문내용:
1. 멘토님께서 지원서를 확인하실 때 가장 인상 깊었던 지원동기나 멘토님께서 생각하시는 지원동기의 올바른 방향성이 궁금합니다.
2. 멘토님께서도 이직을 하시면서 면접을 보신 경험이 있으실 것 같습니다. 본인만의 면접 준비 방법이나 꿀팁이 있는지 궁금합니다.
해당기업의 도메인이라던가 연관지어서 설명해야해. 지원하고 싶은 부서와서 그 경쟁력과 매칭시키는게 좋아.
자주 이야기하는게 근거기반의 사고가 아주 중요하다고 말하자나, 그 근거가 맞든 틀리든 설명할 수 있는 역량이 중요해. 지원동기도 이것과 동일하게 내가 이 회사를 어떠한 판단 하에 지원했느냐를 공감,판단이 틀렸더라도 언급하고 설명하면 좋아.
그 회사에 맞춰서 진정성있게 100개 자 정도를 공통 이력서에 넣어서 써봐.