SlideShare a Scribd company logo
Spring Framework 2부
사내서비스개발센터
김흥래
오브젝트 팩토리
• 테스트 코드에 존재하던 관계 설정 책임을
구현한 코드는 어디로 가야 할까?
• 하던일1)
– 관심사 객체의 생성 방법을 정의
• 하던일2)
– 생성된 관심사 객체를 제공
오브젝트 팩토리
• 이러한 일을 전문적으로 하는 오브젝트를
팩토리(Factory)라고 부른다.
– 오브젝트를 생성하는 쪽과 사용하는 쪽의 책임과 역할을
깔끔하게 분리하는 목적으로 사용
– 별도의 클래스로 제공된다.
• Sample : code01
오브젝트 팩토리
• Sample : code02
제어의 역전 (IoC)
• 초기 UserDao 상태
– UserDao 객체를 main() 메소드에서 직접 생성
– 사용할 커넥션 정책도 UserDao 코드속에 존재
– 필요한 객체를 미리 만들어두고 필요한 시점에 메소드에서 사용
• 초기 UserDao 제어권의 위치
– 모든 오브젝트가 자신이 사용할 클래스를 미리 코드로 결정해둔
상태
– 사용할 클래스를 언제 어떻게 만들지에 대한 정책도 이미 결정
됨 (Runtime에 선택 불가)
– 모든 로직을 사용하는 쪽에서 제어하는 구조
제어의 역전 (IoC)
• 제어권 이전을 통한 제어관계 역전
– 제어의 역전(Inversion of Control)이란 간단히 말해서 프로그램
의 제어 흐름 구조가 뒤바뀌는 것이다.
– 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하지 않는다.
– 자신 또한 어떻게 만들어지고 어디서 사용되는지 알지 못한다.
– 모든 제어 권한을 자신이 아닌 다른 대상에게 위임한다.
제어의 역전 (IoC)
• 사용예
– Servlet 컨테이너
• Servlet Life-Cycle
– Template Method 패턴
• Abstract Method 구현
– 프레임워크
• 어플리케이션 흐름 제어 (IoC)
• 어플리케이션 코드는 프레임워크가 짜놓은 틀에서 수동적으
로 동작한다.
제어의 역전 (IoC)
• 라이브러리 vs 프레임워크
제어의 역전 (IoC)
• 오브젝트 팩토리를 도입한 UserDao
– 관심을 분리하고 책임을 나누는 과정에서 자연스럽게 IoC가 적
용되었다.
– 스프링 프레임워크 없이도 IoC를 적용한 셈이다.
– IoC는 특정 프레임워크의 기능이 아니라 프로그래밍에서 폭넓게
사용하고 있는 기술의 통칭이다.
제어의 역전 (IoC)
• 스프링 프레임워크
– 대표적인 IoC 컨테이너
– 어플리케이션 컴포넌트의 생성과 관계 설정, 사용, 생
명주기 관리 등을 전문적으로 관리해 주는 프레임워
크이다.
– 우리가 만든 DaoFactory도 Simple한 IoC가 가능하지
만 IoC 기능을 어플리케이션 전반에서 사용하려면 스
프링 프레임워크 같은 전문적인 IoC 컨테이너를 사용
하는 것이 좋다.
제어의 역전 (IoC)
• 스프링 프레임워크
– 오브젝트 팩토리 역할을 하는 모듈을 스프링
에서는 BeanFactory (ApplicationContext)라고
한다.
• Sample : code03

More Related Content

PPTX
Spring di chapter1
PPTX
[스프링 스터디 1일차] 오브젝트와 의존관계
PPTX
Hibernate5.x
PDF
05_스마트 포인터 구현하기
PDF
클린 코드 part2
PPTX
17 swift 프로토콜
PPTX
15 swift 클래스
PPTX
[스프링 스터디 2일차] IoC 컨테이너와 DI
Spring di chapter1
[스프링 스터디 1일차] 오브젝트와 의존관계
Hibernate5.x
05_스마트 포인터 구현하기
클린 코드 part2
17 swift 프로토콜
15 swift 클래스
[스프링 스터디 2일차] IoC 컨테이너와 DI

Similar to Spring di chapter2 (20)

PDF
Spring Framework - Inversion of Control Container
ODP
Desing Pattern-2
PDF
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
PDF
메이븐 기본 이해
PPTX
Java script의 이해
PDF
LLVM ARC
PPTX
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화
PPTX
개발 방식을 바꾸는 15가지 기술
PPTX
Design patterns
PPTX
[123] electron 김성훈
PPTX
토비의 스프링 - DI
PDF
Node.js 기본
PPTX
[Dev rookie]designpattern
PDF
HolubOnPatterns/chapter2_2
PPTX
2024 인천 블록체인 칼리지 전문가과정 강의자료 - EVM 이론, 솔리디티 기본 문법
PPTX
도메인 객체의 생명주기
PPT
Uml 세미나
PDF
Cluster - spark
ODP
Design Pattern 3
PDF
야, 너두 짤수있어 - IaC Basic(210131 김성익)
Spring Framework - Inversion of Control Container
Desing Pattern-2
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
메이븐 기본 이해
Java script의 이해
LLVM ARC
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화
개발 방식을 바꾸는 15가지 기술
Design patterns
[123] electron 김성훈
토비의 스프링 - DI
Node.js 기본
[Dev rookie]designpattern
HolubOnPatterns/chapter2_2
2024 인천 블록체인 칼리지 전문가과정 강의자료 - EVM 이론, 솔리디티 기본 문법
도메인 객체의 생명주기
Uml 세미나
Cluster - spark
Design Pattern 3
야, 너두 짤수있어 - IaC Basic(210131 김성익)
Ad

More from 흥래 김 (19)

PPTX
생초보를 위한 한글 형태소 분석하기
PPTX
검색엔진과 DB Like 검색의 결과가 다른 이유
PPTX
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
PDF
한글 자동완성 구현하기
PDF
한글 자모 분석 원리
PDF
한글 형태소 분석기 활용하기
PDF
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
PPTX
5강 코드효율성
PPTX
3. stream api
PPTX
2. lambda expression
PPTX
1. introduction to java8
PDF
Spring boot와 docker를 이용한 msa
PDF
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
PPTX
[DevOn 2013] Dynamic web proxy
PPTX
Apache http component
PPTX
플랫폼 통합을 위한 Client Module 개발 & 배포
PPTX
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
PDF
Spring 3.1에서 ehcache 활용 전략
PDF
[2012 자바카페 OPEN 세미나] Introduction to google guava
생초보를 위한 한글 형태소 분석하기
검색엔진과 DB Like 검색의 결과가 다른 이유
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
한글 자동완성 구현하기
한글 자모 분석 원리
한글 형태소 분석기 활용하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
5강 코드효율성
3. stream api
2. lambda expression
1. introduction to java8
Spring boot와 docker를 이용한 msa
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[DevOn 2013] Dynamic web proxy
Apache http component
플랫폼 통합을 위한 Client Module 개발 & 배포
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
Spring 3.1에서 ehcache 활용 전략
[2012 자바카페 OPEN 세미나] Introduction to google guava
Ad

Spring di chapter2

  • 2. 오브젝트 팩토리 • 테스트 코드에 존재하던 관계 설정 책임을 구현한 코드는 어디로 가야 할까? • 하던일1) – 관심사 객체의 생성 방법을 정의 • 하던일2) – 생성된 관심사 객체를 제공
  • 3. 오브젝트 팩토리 • 이러한 일을 전문적으로 하는 오브젝트를 팩토리(Factory)라고 부른다. – 오브젝트를 생성하는 쪽과 사용하는 쪽의 책임과 역할을 깔끔하게 분리하는 목적으로 사용 – 별도의 클래스로 제공된다. • Sample : code01
  • 5. 제어의 역전 (IoC) • 초기 UserDao 상태 – UserDao 객체를 main() 메소드에서 직접 생성 – 사용할 커넥션 정책도 UserDao 코드속에 존재 – 필요한 객체를 미리 만들어두고 필요한 시점에 메소드에서 사용 • 초기 UserDao 제어권의 위치 – 모든 오브젝트가 자신이 사용할 클래스를 미리 코드로 결정해둔 상태 – 사용할 클래스를 언제 어떻게 만들지에 대한 정책도 이미 결정 됨 (Runtime에 선택 불가) – 모든 로직을 사용하는 쪽에서 제어하는 구조
  • 6. 제어의 역전 (IoC) • 제어권 이전을 통한 제어관계 역전 – 제어의 역전(Inversion of Control)이란 간단히 말해서 프로그램 의 제어 흐름 구조가 뒤바뀌는 것이다. – 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하지 않는다. – 자신 또한 어떻게 만들어지고 어디서 사용되는지 알지 못한다. – 모든 제어 권한을 자신이 아닌 다른 대상에게 위임한다.
  • 7. 제어의 역전 (IoC) • 사용예 – Servlet 컨테이너 • Servlet Life-Cycle – Template Method 패턴 • Abstract Method 구현 – 프레임워크 • 어플리케이션 흐름 제어 (IoC) • 어플리케이션 코드는 프레임워크가 짜놓은 틀에서 수동적으 로 동작한다.
  • 8. 제어의 역전 (IoC) • 라이브러리 vs 프레임워크
  • 9. 제어의 역전 (IoC) • 오브젝트 팩토리를 도입한 UserDao – 관심을 분리하고 책임을 나누는 과정에서 자연스럽게 IoC가 적 용되었다. – 스프링 프레임워크 없이도 IoC를 적용한 셈이다. – IoC는 특정 프레임워크의 기능이 아니라 프로그래밍에서 폭넓게 사용하고 있는 기술의 통칭이다.
  • 10. 제어의 역전 (IoC) • 스프링 프레임워크 – 대표적인 IoC 컨테이너 – 어플리케이션 컴포넌트의 생성과 관계 설정, 사용, 생 명주기 관리 등을 전문적으로 관리해 주는 프레임워 크이다. – 우리가 만든 DaoFactory도 Simple한 IoC가 가능하지 만 IoC 기능을 어플리케이션 전반에서 사용하려면 스 프링 프레임워크 같은 전문적인 IoC 컨테이너를 사용 하는 것이 좋다.
  • 11. 제어의 역전 (IoC) • 스프링 프레임워크 – 오브젝트 팩토리 역할을 하는 모듈을 스프링 에서는 BeanFactory (ApplicationContext)라고 한다. • Sample : code03