Your SlideShare is downloading. ×
0
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

스프링 코어 강의 1부 - 봄 맞이 준비 운동

4,718

Published on

사내에서 진행 된 스프링 웹 애플리케이션 개발 과정 중 스프링 코어 부분의 첫번째 발표 자료입니다.

사내에서 진행 된 스프링 웹 애플리케이션 개발 과정 중 스프링 코어 부분의 첫번째 발표 자료입니다.

Published in: Software
2 Comments
95 Likes
Statistics
Notes
No Downloads
Views
Total Views
4,718
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
155
Comments
2
Likes
95
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 봄 맞이 준비 운동 박성철 스프링 프레임워크 코어
  • 2. 발표자 소개 • 개발팀 팀장 • 코더 since 1982 • 많이 망해봤어요. • 취미: 문제 해결법 찾기
  • 3. 生卽苦
  • 4. 프레임워크가 뭐지?
  • 5. 프레임워크는… 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구 조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라 고도 한다. 이렇게 매우 폭넓은 정의는 이 용어를 버즈워드 (buzzword)로서, 특히 소프트웨어 환경에서 사용할 수 있게 만들어 준다. - 한글 위키- 뭐라는거냐?
  • 6. Framework is… an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software. • 제어 역전(IoC; inversion of control) • 기본 행위 • 확장 가능 • 프레임워크 코드 수정 불가(바이너리 재사용)
  • 7. 스프링 프레임워크
  • 8. 스프링 언프레임워크
  • 9. Java EE w/o EJB 범위가 무지 넓다는 뜻…
  • 10. 스프링 프레임워크는… 스프링 프레임워크는 자바 플렛폼으로서 자바 애플리케 이션을 개발하는데 필요한 하부 구조를 포괄적으로 제공 합니다. 스프링이 하부 구조를 처리하므로 개발자는 애플 리케이션 개발에 집중할 수 있습니다. Spring Framework is a Java platform that provides comprehensive infrastructure support for developing Java applications. Spring handles the infrastructure so you can focus on your application.
  • 11. 순수 객체 (POJO) 의존 관계 주입 DependencyInjection 관점 중심 프로그래밍 AspectOrientated Program m ing 이식 가능한 서비스 추상화 Portable Service Abstraction 봄(스프링)의 대삼각형
  • 12. …… 그래서 뭐?
  • 13. 과거 떠나는 시간 여행
  • 14. https://flic.kr/p/9waYuP 복잡도 문제
  • 15. 소프트웨어 위기 소프트웨어 위기의 주요한 위기는 컴퓨터 성능이 몇 수십 배나 더 강력해졌기 때 문입니다! 심하게 말하면, 컴퓨터가 없었을 때는 프로그래밍에는 전혀 문제가 없 었습니다. 느린 컴퓨터 몇 개 뿐이었을 때는 프로그래밍이 조금 문제가 되었고, 이제는 거대한 컴퓨터에 프로그래밍도 따라서 거대한 문제가 되었습니다. - 에츠허르 데이크스트라 @ 1972 ACM 튜링상 수상 연설 F. L. 바우어, 1968, 나토 SW 공학 학회
  • 16. http://commons.wikimedia.org/wiki/File:Rusty_tools.JPG 복잡도를 다루는 다양한 도구
  • 17. 시뮬라 67 객체 & 코루틴 범용 언어 = 알고리듬 구현 + 분해
  • 18. 저결합도 & 고응집도 원칙 #1
  • 19. 역할 기능 기능 A 기능 B 기능 C 기능 D UI/표현 애플리케이션 도메인 통합 인프라 멀티 레이어
  • 20. 객체로 SW를 만들어 보자 Acme Processor UI Logic DAO (Data Access Object)
  • 21. AcmeUI Acme Processor 완성 UI Logic DAO AcmeLogic AcmeDAO
  • 22. AcmeUI Acme Processor + 개발용 UI Logic DAO AcmeLogic RealAcmeDAO DevAcmeDAO
  • 23. AcmeUI Acme Processor + 테스트 UI Logic DAO AcmeLogic RealAcmeDAO DevAcmeDAO TestAcmeDAO
  • 24. AcmeUI Acme Processor +UI 테스트 UI Logic DAO RealAcmeLogic RealAcmeDAO DevAcmeDAO TestAcmeDAO FakeAcmeLogic
  • 25. AcmeUI Acme Processor + 테스트 자동화 UI Logic DAO RealAcmeLogic RealAcmeDAO DevAcmeDAO TestAcmeDAO FakeAcmeLogic AcmeTestCase
  • 26. AcmeUI Acme Processor + 빅데이터 UI Logic DAO RealAcmeLogic RealAcmeDAO DevAcmeDAO TestAcmeDAO FakeAcmeLogic AcmeTestCase RealBigAcmeDAO
  • 27. 스몰톡 - 80 최초의 OOP, 메시지 전달 …해줘 응. 여기~ 그건 ~ …는 뭐니? A B
  • 28. 대면 대화 X
  • 29. 지인과의 전화 통화 X
  • 30. 맥도날드에서 주문하기 O
  • 31. 마법사 피예로 글린다 엘파바네사로즈 딜라몬드
  • 32. 김선영 박혜나 김소현 김보영 이지훈 조상웅 남경주 이상준 마법사피예로글린다엘파바 역할 배우
  • 33. 객체 메시지 (역할) 로직 인터페이스
  • 34. 개방-폐쇄 원칙 (Open-Closed Principle) 원칙 #2
  • 35. AcmeUI Acme Processor Logic DAO AcmeLogic AcmeDAO 인터페이스 클래스
  • 36. 의존관계 역전 원칙 (Dependency Inversion Principle) 원칙 #3
  • 37. AcmeUI Acme Processor + 개발용 Logic DAO AcmeLogic DevAcmeDAO
  • 38. AcmeUI Acme Processor +UI 테스트 Logic DAO FakeAcmeLogic X
  • 39. 배역 구성 Logic DAO RealAcmeLogic RealAcmeDAO 상용 DevAcmeDAO 개발 TestAcmeDAO 테스트 FakeAcmeLogic UI테스트 AcmeTestCase 테스트 AcmeUI RealBigAcmeDAO 빅데이터
  • 40. 다시 미래로 돌아 옵시다
  • 41. 순수 객체 (POJO) 의존 관계 주입 DependencyInjection 관점 중심 프로그래밍 AspectOrientated Program m ing 이식 가능한 서비스 추상화 Portable Service Abstraction 봄(스프링)의 대삼각형
  • 42. 육각형 아키텍처
  • 43. 인프라의 침투 유지 보수 어려움 테스트 장애 개발 속도 저하 결함 급증
  • 44. 비 침투적 스프링 POJO (순수 객체) 차단
  • 45. 순수 객체 (POJO) 의존 관계 주입 DependencyInjection 관점 중심 프로그래밍 AspectOrientated Program m ing 이식 가능한 서비스 추상화 Portable Service Abstraction 봄(스프링)의 대삼각형
  • 46. 애플리케이션 배역 구성 스프링 배역 구성 객체 객체 객체 객체 애플리케이션 구성 메타데이터 (Configuration Metadata) 스프링 컨테이너 (Spring Container) 빈(Bean)
  • 47. 스프링 컨테이너 애플리케이션 빈(Bean) 구성 메타데이터 생성 빈(Bean) • 스프링이 관리하는 컴포넌트성 객체 • POJO (인프라에 오염되지 않은 객체) 구성 메타 데이터(빈 정의) • 애플리케이션 구성 정보(의존 관계 포함) • 다양한 메타 데이터 표현 방법: XML, 자바, 그루비 등 • Java 어노테이션, 어노테이션을 사용한 메타 데이터 표시 • Java 기반 구성 • 자바를 빈 설정용 DSL로 사용 • 스프링 3.0 이상, JavaConfig 프로젝트가 통합 • @Configuration, @Bean, @Import, @DependsOn • XML 없이 애플리케이션 구성 가능 • Java 어노테이션 방식의 완성 • 그루비 빈 구성: 4.0 이상
  • 48. 스프링 컨테이너 애플리케이션 빈(Bean) 구성 메타데이터 생성 컨테이너 • IoC 컨테이너 • 빈 생명 주기 관리 (생성, 초기화, 소멸) • 빈 의존 관계 설정 (의존관계 주입) • 애플리케이션 구성(configuration) ◦값 주입 ◦후처리 ◦AOP IoC vs DI • DI = IoC의 한 형태 • DI = 비침투적 • 공장(Factory) 패턴, 전략 패턴
  • 49. 봄(스프링)의 대삼각형 순수 객체 (POJO) 의존 관계 주입 DependencyInjection 관점 중심 프로그래밍 AspectOrientated Program m ing 이식 가능한 서비스 추상화 Portable Service Abstraction
  • 50. OOP의 한계 • 횡단 관심사 문제: 상속 구조로 해결할 수 없는 중복 • 보안, 로깅, 트랜잭션 관리, 캐시, 에러 처리, 모니터링 • OOP로 해결하기엔 비용 급증 • 횡단 관심사의 관심사 분리 기술 • 인프라로부터 POJO를 보호 • 동적 프록시 기술 사용 AOP
  • 51. 봄(스프링)의 대삼각형 순수 객체 (POJO) 의존 관계 주입 DependencyInjection 관점 중심 프로그래밍 AspectOrientated Program m ing 이식 가능한 서비스 추상화 Portable Service Abstraction
  • 52. 스프링 모듈
  • 53. 스프링의 특징 • 컴포넌트 기반 애플리케이션 구성/생애 관리 • 관심사 분리: 비침투적 기술, POJO, AOP • Effective Java • 선언적 트랜잭션 • 테스트 용이성 • 엔터프라이즈 기술 통합 & 추상화 • 메타프로그래밍

×