장성호's
장성호's blog
장성호's
  • 분류 전체보기
    • 알고리즘
      • 백준
      • 이론
    • WEB
      • Spring 인강
      • 네트워크
    • 개인 프로젝트
      • 쇼핑몰 만들기

블로그 메뉴

  • 홈
  • 깃허브
전체 방문자
오늘
어제
반응형
hELLO · Designed By 정상우.
장성호's

장성호's blog

[Spring] 스프링 공부 #11
WEB/Spring 인강

[Spring] 스프링 공부 #11

2022. 2. 1. 21:33
반응형

 

 

Application Context가 제공하는 부가 기능들

BeanFactory와 ApplicationContext 사이의 관계

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를 상속받은 임의의 다른 클래스를 생성하고,
  • 상속받은 임의의 클래스가 싱글톤이 보장되도록 도와줍니다.

 

출처

[인프런] 스프링 핵심 원리 - 기본편

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

 

[도서] JAVA 객체지향 디자인 패턴, 한빛미디어

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788968480911&orderClick=JAj 

 

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
    'WEB/Spring 인강' 카테고리의 다른 글
    • [Spring] 스프링 공부 #13
    • [Spring] 스프링 공부 #12
    • [Spring] 스프링 공부 #10
    • [Spring] 스프링 공부 #9
    장성호's
    장성호's
    장성호's 개발 공부 블로그

    티스토리툴바