SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
Spring으로 콩 심기
스프링 책에 자주 나오는 용어부터
IoC
● Inversion of Control (제어의 역전)
● 객체 생성, 사용과 같은 생명주기(Lifecycle)와 같은 제어는
프레임워크에게
● 우리는 하라는 것만 하자.
● Framework와 Library 차이는 누가 제어를 하느냐? (나냐? F/W냐?)
Bean
● Spring(IoC Container)에서 관리되는 객체가 바로 Bean
● Bean은 Scope가 있고 Lifecycle이 있다.
● DI를 하기 위해서는 Bean이 필요하고 Bean이어야한다.
Container
● 여러가지 용어
○ Spring Container
○ IoC Container
○ Bean Container
○ 그냥 Spring을 Container라고도 표현 한다.
● Bean을 정의, 생성, 저장, 반환한다.
● Bean을 제어한다.
DI
● Dependency Injection (의존성 주입)
● 의존성을 최소화 하고 책임을 명확히 분리하자.
● 의존성을 줄이는게 답이다.
● 의존성을 아예 없앨 수는 없다. 절대
● 어디서 의존성이 발생할까?
● Spring은 의존성을 최소화 시켜준다.
● DI 종류
○ @annotation
○ setter method
○ constructor
DI는 누가 할것인가?
● Factory Pattern
● Client 코드에서 객체 생성이나 의존성 주입은 하지 말자.
○ 의존 코드가 변경된다면 내가 작성한 코드도 변경 될 가능성이 크다.
○ 바뀐지 모르게 하자.
● Spring에서 DI를 하는 주체는 BeanFactory와 ApplicationContext다.
○ 이게 핵심이다.
○ Spring에 모든 기반은 BeanFactory와 ApplicationContext
■ 대 부분의 객체를 Bean으로 등록해 사용한다고 생각하면 쉽다.
Bean Scope
● IoC Container에서 보관되는 Bean의 생명
● 어떻게 생성하고, 언제까지 살아 있을 것인가?
● singleton
○ default Scope
○ 하나의 IoC Container에서 항상 동일한 Bean을 반환
● prototype
○ 항상 다른 Bean을 반환
● request
○ Web 환경에서 동일한 Request에서만 동일한 Bean을 반환
● session
○ Web 환경에서 동일한 Session에서만 동일한 Bean을 반환
● 그외 thread, globalSession, application
Bean Lifecycle
● Spring에서 제공되는 Bean 생명주기를 위해 제공되는 기능(뒷장 참고)
● *Aware interface가 생명주기에 관련된 기능을 제공
● BeanNameAware's
● BeanClassLoaderAware's {@code setBeanClassLoader}
● BeanFactoryAware's {@code setBeanFactory}
● ResourceLoaderAware's {@code setResourceLoader}
● ApplicationEventPublisherAware's {@code setApplicationEventPublisher}
● MessageSourceAware's {@code setMessageSource}
● ApplicationContextAware's {@code setApplicationContext}
● ServletContextAware's {@code setServletContext}
● {@code postProcessBeforeInitialization} methods of BeanPostProcessors
● InitializingBean's {@code afterPropertiesSet}
● a custom init-method definition
● {@code postProcessAfterInitialization} methods of BeanPostProcessors
BeanFactory와 ApplicationContext
Bean이 등록되는 과정
1. 메타데이터(설정 파일 xml, java)를 통해 bean을 정의
2. 정의된 bean을 BeanDefinition 객체로 생성
a. name, scope, etc…
3. Map<String, BeanDefinition>에 생성된 BeanDefinition 객체를 저장
(put)
Bean이 생성되는 과정(getBean method)
1. 이미 정의된 BeanDefinition을 Map에서 꺼냄
2. getBean 메소드가 처음 호출 된 경우
a. BeanDefinition을 기반으로 instance 생성
b. Map에 instance 저장 후 반환
3. getBean 메소드가 두번 이상 호출 된 경우
a. instance가 저장된 Map에서 꺼낸 후 반환
4. 물론 scope마다 다르게 생성, 저장한다.(위 내용은 singleton 기준)
● 예제 코드
참고
● Spring Core (SLiPP)
● 마틴 파울러 아저씨가 이야기하는 IoC와 DI
● 토비의 스프링
● woniper가 이야기하는 IoC와 Framework
● Bean은 어떻게 등록될까?
● Bean은 어떻게 반환할까?
● BeanFactory 와 ApplicationContext

Más contenido relacionado

Destacado

쏠그룹 조사
쏠그룹 조사쏠그룹 조사
쏠그룹 조사해형 유
 
ON SEOUL : 온서울
ON SEOUL : 온서울ON SEOUL : 온서울
ON SEOUL : 온서울동일 김
 
동아시아 문자 처리
동아시아 문자 처리동아시아 문자 처리
동아시아 문자 처리DaeHyun Sung
 
조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )
조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )
조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )Arawn Park
 
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵Javajigi Jaesung
 
Dive into OpenSource
Dive into OpenSourceDive into OpenSource
Dive into OpenSourceHyun-woo Park
 
Spring framework 4.x
Spring framework 4.xSpring framework 4.x
Spring framework 4.xArawn Park
 
Spring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsSpring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsArawn Park
 
Kakao api 조사
Kakao api 조사Kakao api 조사
Kakao api 조사해형 유
 
변경에 강한 애플리케이션, 유기적 애플리케이션
변경에 강한 애플리케이션, 유기적 애플리케이션변경에 강한 애플리케이션, 유기적 애플리케이션
변경에 강한 애플리케이션, 유기적 애플리케이션Sungchul Park
 
더 나은 개발자 되기
더 나은 개발자 되기더 나은 개발자 되기
더 나은 개발자 되기JeongHun Byeon
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

Destacado (17)

쏠그룹 조사
쏠그룹 조사쏠그룹 조사
쏠그룹 조사
 
ON SEOUL : 온서울
ON SEOUL : 온서울ON SEOUL : 온서울
ON SEOUL : 온서울
 
진행사항
진행사항진행사항
진행사항
 
3. stream api
3. stream api3. stream api
3. stream api
 
동아시아 문자 처리
동아시아 문자 처리동아시아 문자 처리
동아시아 문자 처리
 
조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )
조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )
조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )
 
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
 
Dive into OpenSource
Dive into OpenSourceDive into OpenSource
Dive into OpenSource
 
Elastic stack
Elastic stackElastic stack
Elastic stack
 
Spring framework 4.x
Spring framework 4.xSpring framework 4.x
Spring framework 4.x
 
Spring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsSpring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trends
 
Kakao api 조사
Kakao api 조사Kakao api 조사
Kakao api 조사
 
변경에 강한 애플리케이션, 유기적 애플리케이션
변경에 강한 애플리케이션, 유기적 애플리케이션변경에 강한 애플리케이션, 유기적 애플리케이션
변경에 강한 애플리케이션, 유기적 애플리케이션
 
더 나은 개발자 되기
더 나은 개발자 되기더 나은 개발자 되기
더 나은 개발자 되기
 
TDD or TFD
TDD or TFDTDD or TFD
TDD or TFD
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Similar a Spring으로 콩 심기

스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장Seongchan Kang
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Yeon Soo Kim
 
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for AppspressoKTH, 케이티하이텔
 
Spring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerSpring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerKyung Koo Yoon
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJSEunYoung Kim
 
windows via c++ Ch 5. Job
windows via c++ Ch 5. Jobwindows via c++ Ch 5. Job
windows via c++ Ch 5. JobHyosung Jeon
 
스프링 프레임워크 입문
스프링 프레임워크 입문스프링 프레임워크 입문
스프링 프레임워크 입문Keesun Baik
 
[스프링 스터디 2일차] IoC 컨테이너와 DI
[스프링 스터디 2일차] IoC 컨테이너와 DI[스프링 스터디 2일차] IoC 컨테이너와 DI
[스프링 스터디 2일차] IoC 컨테이너와 DIAnselmKim
 
CleanSwift 적용기
CleanSwift 적용기CleanSwift 적용기
CleanSwift 적용기ssuser86e2971
 
iOS Modular Architecture with Tuist
iOS Modular Architecture with TuistiOS Modular Architecture with Tuist
iOS Modular Architecture with Tuist정민 안
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트Keesun Baik
 
Spring IoC
Spring IoCSpring IoC
Spring IoCSuan Lee
 
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다CONNECT FOUNDATION
 

Similar a Spring으로 콩 심기 (20)

스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장
 
I os 1
I os 1I os 1
I os 1
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수
 
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
 
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
 
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
 
Spring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerSpring Framework - Inversion of Control Container
Spring Framework - Inversion of Control Container
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
 
windows via c++ Ch 5. Job
windows via c++ Ch 5. Jobwindows via c++ Ch 5. Job
windows via c++ Ch 5. Job
 
Spring boot DI
Spring boot DISpring boot DI
Spring boot DI
 
12books
12books12books
12books
 
스프링 프레임워크 입문
스프링 프레임워크 입문스프링 프레임워크 입문
스프링 프레임워크 입문
 
2.Spring IoC & DI (ioc container)
2.Spring IoC & DI (ioc container)2.Spring IoC & DI (ioc container)
2.Spring IoC & DI (ioc container)
 
Using AdoRepository
Using AdoRepositoryUsing AdoRepository
Using AdoRepository
 
[스프링 스터디 2일차] IoC 컨테이너와 DI
[스프링 스터디 2일차] IoC 컨테이너와 DI[스프링 스터디 2일차] IoC 컨테이너와 DI
[스프링 스터디 2일차] IoC 컨테이너와 DI
 
CleanSwift 적용기
CleanSwift 적용기CleanSwift 적용기
CleanSwift 적용기
 
iOS Modular Architecture with Tuist
iOS Modular Architecture with TuistiOS Modular Architecture with Tuist
iOS Modular Architecture with Tuist
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트
 
Spring IoC
Spring IoCSpring IoC
Spring IoC
 
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
 

Spring으로 콩 심기

  • 2. 스프링 책에 자주 나오는 용어부터
  • 3. IoC ● Inversion of Control (제어의 역전) ● 객체 생성, 사용과 같은 생명주기(Lifecycle)와 같은 제어는 프레임워크에게 ● 우리는 하라는 것만 하자. ● Framework와 Library 차이는 누가 제어를 하느냐? (나냐? F/W냐?)
  • 4. Bean ● Spring(IoC Container)에서 관리되는 객체가 바로 Bean ● Bean은 Scope가 있고 Lifecycle이 있다. ● DI를 하기 위해서는 Bean이 필요하고 Bean이어야한다.
  • 5. Container ● 여러가지 용어 ○ Spring Container ○ IoC Container ○ Bean Container ○ 그냥 Spring을 Container라고도 표현 한다. ● Bean을 정의, 생성, 저장, 반환한다. ● Bean을 제어한다.
  • 6.
  • 7. DI ● Dependency Injection (의존성 주입) ● 의존성을 최소화 하고 책임을 명확히 분리하자. ● 의존성을 줄이는게 답이다. ● 의존성을 아예 없앨 수는 없다. 절대 ● 어디서 의존성이 발생할까? ● Spring은 의존성을 최소화 시켜준다. ● DI 종류 ○ @annotation ○ setter method ○ constructor
  • 8. DI는 누가 할것인가? ● Factory Pattern ● Client 코드에서 객체 생성이나 의존성 주입은 하지 말자. ○ 의존 코드가 변경된다면 내가 작성한 코드도 변경 될 가능성이 크다. ○ 바뀐지 모르게 하자. ● Spring에서 DI를 하는 주체는 BeanFactory와 ApplicationContext다. ○ 이게 핵심이다. ○ Spring에 모든 기반은 BeanFactory와 ApplicationContext ■ 대 부분의 객체를 Bean으로 등록해 사용한다고 생각하면 쉽다.
  • 9.
  • 10. Bean Scope ● IoC Container에서 보관되는 Bean의 생명 ● 어떻게 생성하고, 언제까지 살아 있을 것인가? ● singleton ○ default Scope ○ 하나의 IoC Container에서 항상 동일한 Bean을 반환 ● prototype ○ 항상 다른 Bean을 반환 ● request ○ Web 환경에서 동일한 Request에서만 동일한 Bean을 반환 ● session ○ Web 환경에서 동일한 Session에서만 동일한 Bean을 반환 ● 그외 thread, globalSession, application
  • 11. Bean Lifecycle ● Spring에서 제공되는 Bean 생명주기를 위해 제공되는 기능(뒷장 참고) ● *Aware interface가 생명주기에 관련된 기능을 제공
  • 12. ● BeanNameAware's ● BeanClassLoaderAware's {@code setBeanClassLoader} ● BeanFactoryAware's {@code setBeanFactory} ● ResourceLoaderAware's {@code setResourceLoader} ● ApplicationEventPublisherAware's {@code setApplicationEventPublisher} ● MessageSourceAware's {@code setMessageSource} ● ApplicationContextAware's {@code setApplicationContext} ● ServletContextAware's {@code setServletContext} ● {@code postProcessBeforeInitialization} methods of BeanPostProcessors ● InitializingBean's {@code afterPropertiesSet} ● a custom init-method definition ● {@code postProcessAfterInitialization} methods of BeanPostProcessors
  • 14.
  • 15. Bean이 등록되는 과정 1. 메타데이터(설정 파일 xml, java)를 통해 bean을 정의 2. 정의된 bean을 BeanDefinition 객체로 생성 a. name, scope, etc… 3. Map<String, BeanDefinition>에 생성된 BeanDefinition 객체를 저장 (put)
  • 16. Bean이 생성되는 과정(getBean method) 1. 이미 정의된 BeanDefinition을 Map에서 꺼냄 2. getBean 메소드가 처음 호출 된 경우 a. BeanDefinition을 기반으로 instance 생성 b. Map에 instance 저장 후 반환 3. getBean 메소드가 두번 이상 호출 된 경우 a. instance가 저장된 Map에서 꺼낸 후 반환 4. 물론 scope마다 다르게 생성, 저장한다.(위 내용은 singleton 기준)
  • 18. 참고 ● Spring Core (SLiPP) ● 마틴 파울러 아저씨가 이야기하는 IoC와 DI ● 토비의 스프링 ● woniper가 이야기하는 IoC와 Framework ● Bean은 어떻게 등록될까? ● Bean은 어떻게 반환할까? ● BeanFactory 와 ApplicationContext