SlideShare a Scribd company logo
1 of 29
Download to read offline
주니어 개발자도 이해 할 수 있는 
의존성 주입 
(Dependency Injection) 
2014. 11 
Darion Kim
나는 누구? 
Darion Kim (김헌기) 
디에스멘토링 연구소 수석 
보 
자칭 통신(통합의 신, God of 
Integration) 
hnki0104@me.com 
https://www.facebook.com/ 
groups/serverside (율이아빠)
이 문서를 모든 
Freshman에게 바칩니다. 
(for YMS, JHJ)
아름다운 JVM 세상을 못 
보셨으면 여기까지만 … 
http://www.slideshare.net/hnki0104/bueatiful-jvm-world
Java Spring Framework 기준 
으로 설명하겠습니다. 
원치않으시면 여기까지만…
약속드립니다. 
절대 어렵게 얘기하 
지 않겠습니다.
그럼 의존성 주입 
(Dependency Injection)에 
대하여 시작하겠습니다.
일반적으로 우리는 
객체를 이렇게 해서 
생성합니다.
사람 객체 만들기 
머리A, 몸통, 팔, 다리 클래스 정의 
사람 클래스 정의 
사람 클래스 각각의 필드에 머리A, 몸통, 팔, 
다리 클래스 합성 
사람 클래스 안에서 머리A, 몸통, 팔, 다리 클 
래스의 객체를 생성하고 각각의 필드에 설정
그림으로 설명하면? 
사람 
클래스 
머리 
몸통 
팔[] 
다리[] 
머리A 
클래스 
몸통 
클래스 
팔 
클래스 
다리 
클래스
사람 객체 생성 
사람 
클래스 
머리 
몸통 
팔[] 
다리[] 
머리A 
클래스 
몸통 
클래스 
팔 
클래스 
다리 
클래스 
몸통 
객체 
사람 
객체 
머리 
몸통 
팔[] 
다리[] 
머리A 
객체 
팔-1 
객체 
팔-2 
객체 
다리-1 
객체 
다리-2 
객체
왜 머리만 머리A클래 
스로 명명했을까요?
쉽게 이해하시라고 
했습니다.
클래스 합성은 언제 
든지 변경될 수 있습 
니다.
사람 객체 수정하기 
사람 클래스의 머리 필드를 머리A 클 
래스에서 머리B 클래스로 변경 
사람 클래스를 수정해야 함 
사람 클래스 합성에 영향 발생
사람A 객체 생성 
사람 
클래스 
머리 
몸통 
팔[] 
다리[] 
머리A 
클래스 
몸통 
클래스 
팔 
클래스 다리 
클래스 
몸통 
객체 
사람 
객체 
머리 
몸통 
팔[] 
다리[] 
머리A 
객체 
팔-1 
객체 
팔-2 
객체 다리-1 
객체 
다리-2 
객체 
머리B 
클래스 
머리B 
객체
의존성 주입으로 다 
시 설명하겠습니다.
사람 객체 만들기 
머리A, 몸통, 팔, 다리 클래스 정의 
사람 클래스 정의 
사람 클래스의 각각의 필드와 머리A, 몸통, 
팔, 다리 클래스의 의존성을 정의한 Bean 
Context 작성 
Bean Context 정보 기준으로 객체를 생성하고 
의존성 주입
그림으로 설명하면? 
사람 
클래스 
머리 
몸통 
팔[] 
다리[] 
머리A 
클래스 
몸통 
클래스 
팔 
클래스 
다리 
클래스 
Bean Context 
<bean id= 머리, class=머리A 클래스/> 
<bean id=몸통, class=몸통 클래스/> 
<bean id=팔, class=[팔 클래스/> 
<bean id=다리, class=[다리 클래스/> 
<bean id=사람, class=사람 클래스> 
<property name=머리 value=머리> 
<property name=몸통 value=몸통> 
<property name=팔 value=팔> 
<property name=다리 value=다리> 
</bean>
사람 객체 생성 
사람 
클래스 
머리 
몸통 
팔[] 
다리[] 
머리A 
클래스 
몸통 
클래스 
팔 
클래스 
다리 
클래스 
몸통 
객체 
사람 
객체 
머리A 
몸통 
팔[] 
다리[] 
머리A 
객체 
팔-1 
객체 
팔-2 
객체 
다리-1 
객체 
다리-2 
객체 
Bean 
Context
사람 객체 수정하기 
사람 클래스 머리 필드를 머리A 클래 
스에서 머리B 클래스로 변경 
Bean Context를 <bean id=머리 class=머 
리B클래스>로 수정 
사람 클래스에는 영향이 없음
그림으로 설명하면? 
사람 
클래스 
머리 
몸통 
팔[] 
다리[] 
머리A 
클래스 
머리B 
클래스 
팔 
클래스 
다리 
클래스 
Context 
<bean id= 머리, class=머리B 클래스/> 
<bean id=몸통, class=몸통 클래스/> 
<bean id=팔, class=[팔 클래스/> 
<bean id=다리, class=[다리 클래스/> 
<bean id=사람, class=사람 클래스> 
<property name=머리 value=머리> 
<property name=몸통 value=몸통> 
<property name=팔 value=팔> 
<property name=다리 value=다리> 
</bean> 
몸통 
클래스
이렇게 생각하시면 
됩니다.
조소 만들어보셨습니까?
바로 찰흙부터 붙일 
수는 없습니다.
일에는 순서가 있습니다. 
의존성 설계 의존성 설정 의존성 주입
뼈대만 잘 만들면 언제든 
다른 색깔의 찰흙으로 바 
꿔 붙일수 있습니다.
Black or White
이상 율이아빠였습니다.

More Related Content

More from Darion Kim

디지털화 역량강화를 위한 GS SHOP 고군분투기
디지털화 역량강화를 위한 GS SHOP 고군분투기디지털화 역량강화를 위한 GS SHOP 고군분투기
디지털화 역량강화를 위한 GS SHOP 고군분투기Darion Kim
 
개발방식의 변화를 위한 GSShop 고군분투기
개발방식의 변화를 위한 GSShop 고군분투기개발방식의 변화를 위한 GSShop 고군분투기
개발방식의 변화를 위한 GSShop 고군분투기Darion Kim
 
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144Darion Kim
 
바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기
바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기
바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기Darion Kim
 
코드품질 개선을 위한 GS SHOP 고군분투기
코드품질 개선을 위한 GS SHOP 고군분투기코드품질 개선을 위한 GS SHOP 고군분투기
코드품질 개선을 위한 GS SHOP 고군분투기Darion Kim
 
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편Darion Kim
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편Darion Kim
 
주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편Darion Kim
 
Owasp top 10 2013 - 정다운 -
Owasp top 10   2013 - 정다운 -Owasp top 10   2013 - 정다운 -
Owasp top 10 2013 - 정다운 -Darion Kim
 
라면공장패턴
라면공장패턴라면공장패턴
라면공장패턴Darion Kim
 
주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -
주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -
주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -Darion Kim
 
주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편
주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편
주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편Darion Kim
 

More from Darion Kim (12)

디지털화 역량강화를 위한 GS SHOP 고군분투기
디지털화 역량강화를 위한 GS SHOP 고군분투기디지털화 역량강화를 위한 GS SHOP 고군분투기
디지털화 역량강화를 위한 GS SHOP 고군분투기
 
개발방식의 변화를 위한 GSShop 고군분투기
개발방식의 변화를 위한 GSShop 고군분투기개발방식의 변화를 위한 GSShop 고군분투기
개발방식의 변화를 위한 GSShop 고군분투기
 
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
 
바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기
바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기
바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기
 
코드품질 개선을 위한 GS SHOP 고군분투기
코드품질 개선을 위한 GS SHOP 고군분투기코드품질 개선을 위한 GS SHOP 고군분투기
코드품질 개선을 위한 GS SHOP 고군분투기
 
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편
 
주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편
 
Owasp top 10 2013 - 정다운 -
Owasp top 10   2013 - 정다운 -Owasp top 10   2013 - 정다운 -
Owasp top 10 2013 - 정다운 -
 
라면공장패턴
라면공장패턴라면공장패턴
라면공장패턴
 
주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -
주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -
주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -
 
주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편
주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편
주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편
 

주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)

  • 1. 주니어 개발자도 이해 할 수 있는 의존성 주입 (Dependency Injection) 2014. 11 Darion Kim
  • 2. 나는 누구? Darion Kim (김헌기) 디에스멘토링 연구소 수석 보 자칭 통신(통합의 신, God of Integration) hnki0104@me.com https://www.facebook.com/ groups/serverside (율이아빠)
  • 3. 이 문서를 모든 Freshman에게 바칩니다. (for YMS, JHJ)
  • 4. 아름다운 JVM 세상을 못 보셨으면 여기까지만 … http://www.slideshare.net/hnki0104/bueatiful-jvm-world
  • 5. Java Spring Framework 기준 으로 설명하겠습니다. 원치않으시면 여기까지만…
  • 6. 약속드립니다. 절대 어렵게 얘기하 지 않겠습니다.
  • 7. 그럼 의존성 주입 (Dependency Injection)에 대하여 시작하겠습니다.
  • 8. 일반적으로 우리는 객체를 이렇게 해서 생성합니다.
  • 9. 사람 객체 만들기 머리A, 몸통, 팔, 다리 클래스 정의 사람 클래스 정의 사람 클래스 각각의 필드에 머리A, 몸통, 팔, 다리 클래스 합성 사람 클래스 안에서 머리A, 몸통, 팔, 다리 클 래스의 객체를 생성하고 각각의 필드에 설정
  • 10. 그림으로 설명하면? 사람 클래스 머리 몸통 팔[] 다리[] 머리A 클래스 몸통 클래스 팔 클래스 다리 클래스
  • 11. 사람 객체 생성 사람 클래스 머리 몸통 팔[] 다리[] 머리A 클래스 몸통 클래스 팔 클래스 다리 클래스 몸통 객체 사람 객체 머리 몸통 팔[] 다리[] 머리A 객체 팔-1 객체 팔-2 객체 다리-1 객체 다리-2 객체
  • 12. 왜 머리만 머리A클래 스로 명명했을까요?
  • 14. 클래스 합성은 언제 든지 변경될 수 있습 니다.
  • 15. 사람 객체 수정하기 사람 클래스의 머리 필드를 머리A 클 래스에서 머리B 클래스로 변경 사람 클래스를 수정해야 함 사람 클래스 합성에 영향 발생
  • 16. 사람A 객체 생성 사람 클래스 머리 몸통 팔[] 다리[] 머리A 클래스 몸통 클래스 팔 클래스 다리 클래스 몸통 객체 사람 객체 머리 몸통 팔[] 다리[] 머리A 객체 팔-1 객체 팔-2 객체 다리-1 객체 다리-2 객체 머리B 클래스 머리B 객체
  • 17. 의존성 주입으로 다 시 설명하겠습니다.
  • 18. 사람 객체 만들기 머리A, 몸통, 팔, 다리 클래스 정의 사람 클래스 정의 사람 클래스의 각각의 필드와 머리A, 몸통, 팔, 다리 클래스의 의존성을 정의한 Bean Context 작성 Bean Context 정보 기준으로 객체를 생성하고 의존성 주입
  • 19. 그림으로 설명하면? 사람 클래스 머리 몸통 팔[] 다리[] 머리A 클래스 몸통 클래스 팔 클래스 다리 클래스 Bean Context <bean id= 머리, class=머리A 클래스/> <bean id=몸통, class=몸통 클래스/> <bean id=팔, class=[팔 클래스/> <bean id=다리, class=[다리 클래스/> <bean id=사람, class=사람 클래스> <property name=머리 value=머리> <property name=몸통 value=몸통> <property name=팔 value=팔> <property name=다리 value=다리> </bean>
  • 20. 사람 객체 생성 사람 클래스 머리 몸통 팔[] 다리[] 머리A 클래스 몸통 클래스 팔 클래스 다리 클래스 몸통 객체 사람 객체 머리A 몸통 팔[] 다리[] 머리A 객체 팔-1 객체 팔-2 객체 다리-1 객체 다리-2 객체 Bean Context
  • 21. 사람 객체 수정하기 사람 클래스 머리 필드를 머리A 클래 스에서 머리B 클래스로 변경 Bean Context를 <bean id=머리 class=머 리B클래스>로 수정 사람 클래스에는 영향이 없음
  • 22. 그림으로 설명하면? 사람 클래스 머리 몸통 팔[] 다리[] 머리A 클래스 머리B 클래스 팔 클래스 다리 클래스 Context <bean id= 머리, class=머리B 클래스/> <bean id=몸통, class=몸통 클래스/> <bean id=팔, class=[팔 클래스/> <bean id=다리, class=[다리 클래스/> <bean id=사람, class=사람 클래스> <property name=머리 value=머리> <property name=몸통 value=몸통> <property name=팔 value=팔> <property name=다리 value=다리> </bean> 몸통 클래스
  • 25. 바로 찰흙부터 붙일 수는 없습니다.
  • 26. 일에는 순서가 있습니다. 의존성 설계 의존성 설정 의존성 주입
  • 27. 뼈대만 잘 만들면 언제든 다른 색깔의 찰흙으로 바 꿔 붙일수 있습니다.