반응형
Application Context가 제공하는 부가 기능들
ApplicataionContext는 국제화 기능, 환경변수, 애플리케이션 이벤트, 편리한 리소스 조회의 부가 기능들과 빈 관리기능을 제공한다.
싱글톤 패턴 - Singleton Pattern
싱글턴 패턴은 전역변수를 사용하지 않고 인스턴스를 하나만 생성하여, 생성된 인스턴스를 어디에서든지 참조할 수 있도록 하는 패턴이다.
public class Printer {
private static Printer printer = new Printer();
private Printer() { }
public static Printer getPrinter(){
return printer;
}
public void print(String str) {
System.out.println(str);
}
}
- 위의 코드처럼 printer 인스턴스를 static으로 선언해서 초기화 한 뒤,
- 생성자를 private로 선언하여 외부에서 생성자를 호출하지 못하게 하고,
- getPrinter() 메서드를 통해서 인스턴스를 외부에 제공한다.
스프링에서의 싱글톤 컨테이너
- 스프링 컨테이너는 객체 인스턴스를 1개만 생성해서 유지할 수 있도록 관리해준다.
- 스프링의 기본 빈 등록 방식은 싱글톤이다.
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
@Bean
public OrderService orderService() {
return new OrderServiceImpl(memberRepository(), discountPolicy());
}
@Bean
public DiscountPolicy discountPolicy() {
// return new FixedDiscountPolicy();
return new RateDiscountPolicy();
}
}
하지만, AppConfig의 코드를 살펴보면 memberService() 와 orderService에서 각각 memberRepository()를 호출하면서 싱글톤이 깨질것처럼 보인다.
- 스프링 컨테이너는 싱글톤 레지스트리이기 때문에 스프링 빈이 싱글톤이 되도록 보장하여야 합니다.
- 그래서 실제 AppConfig가 아닌 AppConfig를 상속받은 임의의 다른 클래스를 생성하고,
- 상속받은 임의의 클래스가 싱글톤이 보장되도록 도와줍니다.
출처
[인프런] 스프링 핵심 원리 - 기본편
스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
[도서] JAVA 객체지향 디자인 패턴, 한빛미디어
JAVA 객체지향 디자인 패턴 - 교보문고
UML과 GoF 디자인 패턴 핵심 10가지로 배우는 | 이 책이 제시하는 핵심 내용객체지향 이론과 UML을 통해 GoF 디자인 패턴의 핵심 10가지를 배운다.이 책의 특징과 장점5단계 학습법으로 디자인 패턴을
www.kyobobook.co.kr
반응형
'WEB > Spring 인강' 카테고리의 다른 글
[Spring] 스프링 공부 #13 (0) | 2022.02.09 |
---|---|
[Spring] 스프링 공부 #12 (0) | 2022.02.07 |
[Spring] 스프링 공부 #10 (0) | 2022.01.25 |
[Spring] 스프링 공부 #9 (0) | 2022.01.09 |
[Spring] 스프링 공부 #8 (0) | 2022.01.08 |