Advertisement
Advertisement

More Related Content

Advertisement
Advertisement

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

  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 • 선언적 트랜잭션 • 테스트 용이성 • 엔터프라이즈 기술 통합 & 추상화 • 메타프로그래밍
Advertisement