Covenant





Cover Image. SEOULSQUARE Official Page



시작하며


지난달부터 동기들과 김영한님의 인프런 강의인 스프링 핵심 원리 - 기본편 을 바탕으로 함께 스터디하고 있습니다. 스터디 모임에 사용한 제가 제작한 슬라이드를 세상에 공개합니다. 스프링 스터디를 준비하거나 스프링을 깊게 공부하고 싶은 분에게 하나의 나침판이 되었으면 좋겠습니다.





Week 1. 스프링이 사랑한 SOLID


EJB라는 암흑의 시간을 지나고 Spring이 등장하였습니다. Spring과 EJB의 가장 큰 차이점은 프레임워크의 의존성을 줄이고 SOLID를 십분 활용한 개발을 할 수 있다는 점입니다.


저의 과거 회사에서 SOLID를 지키지 못해 고생한 경험담으로 스프링 프레임워크에서 SOLID를 활용할 수 있다는 점이 얼마나 큰 축복인지 그 이야기 속으로 초대합니다.


  • 스터디 일시: 21. 06. 02(수)
  • 스터디 범위: 섹션 1. 객체 지향 설계와 스프링




Week 2. 아주 작은 빈 이야기 (1)



빈은 스프링에서 빼놓을 수 없는 작지만 중요한 요소입니다. 빈의 Life Cycle과 IoC 컨테이너에 등록하는 방법을 살펴보면서 빈이 무엇인지, 스프링에서 어떻게 활용하는지 조감을 해보겠습니다.


  • 스터디 일시: 21. 06. 02(수)
  • 스터디 범위
    • 섹션 2. 스프링 핵심 원리 이해1 - 예제 만들기
    • 섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용




Week 3. 아주 작은 빈 이야기 (2)



아주 작은 빈 이야기(1)에서 Life Cycle을 빈 CRUD 관점에서 살펴보려고 합니다. 빈은 왜 Map으로 관리하는지, 멱등성을 갖는 빈의 Update는 어떤 방법으로 할 수 있는지 알아보겠습니다.


  • 스터디 일시: 21. 06. 09(수)
  • 스터디 범위: 섹션 4. 스프링 컨테이너와 스프링 빈




Week 4. 빈은 전설이다.



제목은 인터넷 밈을 패러디하여 가슴이 웅장해진다. 내가 알던 빈이 맞냐?의 줄인 표현입니다. 실제 IoC 컨테이너에서 빈을 조회하면 등록한 빈이 아닌 CGLib이라는 낯선 친구가 나옵니다. AOP까지 연결해야 하는 개념이기에 다이나믹 프록시와 CGlib을 살짝 맛만 봐봅시다.


  • 스터디 일시: 21. 06. 16(수)
  • 스터디 범위: 섹션 5. 싱글톤 컨테이너




Week 5 컴포넌트 스캔 & 빈 주입



스프링이 자동으로 해주는 컴포넌트 스캔. 스프링에서 컴포넌트 스캔은 어떻게 이루질까요? 내부 코드와 함께 동작 원리를 살펴봅시다.


  • 스터디 일시: 21. 06. 23(수)
  • 스터디 범위: 6. 컴포넌트 스캔




Week 6 autowired beanlifecycle



잘 사용하지 않는 Autowired! 그 Autowired를 살펴볼 것입니다. 초반에 살펴본 라이프싸이클을 다시 살펴보며 빈 주입은 어디에 위치하는지, 내부에서 어떻게 동작하는지 공부해봅시다.


  • 스터디 일시: 21. 06. 30(수)
  • 스터디 범위: 7 의존관계 자동 주입




Week 8 bean life cycle



그동안 공부한 내용을 정리하는 시간입니다. 빈 라이프싸이클을 되돌아보면서 어떻게 동작하는지 리뷰하는 시간을 갖겠습니다.


  • 스터디 일시: 21. 07. 07(수)
  • 스터디 범위: 8. 빈 생명주기, 콜백, 스코프




Week 10 [로켓 자바] 성능 튜닝 마인드 확립



한 단계 성장한 개발자가 되기 위해서 애플리케이션을 모니터링, 개선하는 것이 필수입니다. 성능 튜닝하기 위해서 알아야할 암달의 법칙, 그리고 어떻게 성능을 고려한 개발을할지 마인드를 확립해보겠습니다.


  • 스터디 일시: 21. 07. 21(수)
  • 스터디 범위: 자유선택




다음은 책 스터디 스터디 슬라이드입니다.



오브젝트 Ch02 객체지향 프로그래밍



객체지향이란 무엇일까요? 단순히 OOP 특징인 캡슐화, 상속, 추상화, 다형성이 코드에 드러나면 되는 것일까요? SOLID스러운 코드를 말하는 것일까요? 본격적인 객체지향을 설명하기전, 캡슐화, 상속, 추상화, 다형성을 살펴보며 앞으로 이야기할 역할, 책임, 협력에 대해서 살펴보겠습니다.


  • 스터디 일시: 21. 07. 05(월)
  • 스터디 범위: 조영호 오브젝트 Ch02. 객체지향 프로그래밍




오브젝트 Ch03 역할, 책임, 협력



객체지향하기 위해서는 역할, 책임, 협력을 고려해야합니다. 이들이 각각 무슨 의미인지 다이어그램을 통해서 보겠습니다. 저자의 다른 저서인 객체지향의 사실과 오해를 인용하여 역할, 책임, 협력 특징에 대해서 살펴보겠습니다.


  • 스터디 일시: 21. 07. 12(월)
  • 스터디 범위: 조영호 오브젝트 Ch03. 역할, 책임, 협력




오브젝트 Ch04 설계 품질과 트레이드오프



책에 데이터 중심설계의 문제점을 보여줍니다. 본 슬라이드에서는 책을 넘어서 다양한 예시를 통해서 데이터 중심 설계의 단점을 설명합니다.


  • 스터디 일시: 21. 07. 19(월)
  • 스터디 범위: 조영호 오브젝트 Ch04. 설계 품질과 트레이드오프




오브젝트 Ch05 책임 할당하기



책의 예제에서는 책임을 할당하여 개발했을때의 장점을 보여줍니다. 캔트백의 역할, 가치, 패턴을 살펴보겠습니다. 데이터 중심 설계에서 책임주도 설계를 하기 위한 GRASP 패턴에 대해서 살펴보겠습니다.


  • 스터디 일시: 21. 07. 26(월)
  • 스터디 범위: 조영호 오브젝트 Ch05. 책임 할당하기




오브젝트 Ch07 객체 분해



조지밀러의 매직넘버에 의하면 인간이 한번에 처리할 수 있는 정보의양이 한정되어있습니다. 개발자 또한 마찬가지이며 코드 복잡도를 낮추기 위해서 분해를 해야합니다. 분해의 방법으로 (1)기능분해 (2)추상 데이터 타입 (3)객체지향이 있습니다. 각각의 장단점을 살펴보겠습니다.


  • 스터디 일시: 21. 08. 06(월)
  • 스터디 범위: 조영호 오브젝트 Ch07. 객체 분해