SpringBoot #1.2 - IoC, DDD, ApplicationContext, DI

텐저린티·2023년 6월 20일
0

데브코스

목록 보기
7/41

IoC (Inversion of Control) - 제어의 역전

  • 기존 제어
    • 모든 작업을 사용하는 쪽에서 제어하는 구조
    • Order entity가 사용할 Voucher 클래스를 결정하고, 객체를 생성
  • 역전 제어
    • 객체가 자신이 사용할 개체를 선택하지 않고, 생성하지도 않음.
    • 프레임워크가 흐름 주도하면서 개발자가 만든 애플리케이션 코드 사용 → Hollywood Principle IoC

DDD

  • Domain Model Layer
    • Aggregate = entity
  • Infrastructure-Persistance Layer
    • Repository
  • Data Tier
    • Data, DataBase

Application Context @Context

  • IoC 컨테이너는 객체 생성, 조합해주는 프레임워크
    • IoC 컨테이너 안에서 Object(Bean) 생성되고, 조합됨.
  • spring에서 제공하는 IoC 컨테이너가 ApplicationContext 인터페이스
  • 실제 만들어야 할 Bean 정보를 Configuration Metadata에서 받아옴.
  • 메타데이터를 이용해서 IoC 컨테이너에 의해 관리되는 Bean을 생성, 구성
  • XML 방식 < java기반 방식(Annotation)
  • 객체들의 도면
  • BeanFactory 상속
  • Bean
    • IoC 컨테이너에 의해 관리되는 객체
    • @Bean

DI (Dependency Injection)

  • entity가 어떤 service, repository 객체를 생성할지 스스로 결정하지 않고, 생성자를 통해 외부에서 객체를 주입받는 패턴
  • 생성자 주입 패턴
  • setter 기반 주입 패턴
  • DI로 원하는 것
    • 생성할 객체의 null 방지
    • 생성할 객체의 immutable
    • 사용자 마음에 따라 완전히 초기화된 객체 반환
    • 그래도 생성자 구문이 너무 길어지면 안 좋으니 적절하게 사용해라.
profile
개발하고 말테야

0개의 댓글

관련 채용 정보