토비의 스프링 | 7장 스프링 핵심 기술의 응용 (읽기 모임)

주싱·2022년 11월 7일
0

토비의 스프링

목록 보기
26/30
post-custom-banner

토비의 스프링 ‘7장 스프링의 핵심 기술의 응용’을 읽고 모임 중 나누고 싶은 내용 및 인상 깊은 이야기들을 정리합니다.

1. 나의 나눔

선생님께 자랑하고 싶은 것

선생님께 자랑하고 싶은 학생의 마음 같은 건데, 3장 템플릿/콜백을 배운 이후에 현업에서 만나는 코드들이 모두 템플릿과 콜백으로 나누어져서 보이기 시작하더라구요. 마치 당구 처음 배우면 천장에 당구대가 보인다는 느낌이랄까요? 변하는 것과 변하지 않는 것을 나누고 변하는 값이든 코드든 파라미터로 넘기는 방식을 사용하며 코드에서 놀라운 변화가 생기는 것 같습니다.

나의 페이스

1권 막바지를 향해 달려가고 있어서 그 동안의 학습 패턴을 한 번 뒤돌아 보았습니다. 다른 분들은 어떤지 모르겠는데 저는 삶에서 약간의 오버페이스를 유지하지 않으면 진도를 따라가기 어려웠습니다. 특히 6장과 7장은 제대로 학습하면서 한 주만에 읽기가 어렵더라구요. 이번 주 7장을 읽으면서는 조금 지치는 마음이 들어서 의도적으로 반만 읽으려고 조금 편안한 마음을 가지고 읽었습니다. 완주하는 것도 중요하니까요.

XJC 트러블 슈팅의 어려움

저는 7장 초반에 JAXB 컴파일러를 사용해서 코드를 생성하고 JAXBContext를 생성하는 부분이랑 SQL문이 담긴 XML 설정 파일 경로를 참조하는 부분이 잘 안되서 한참 해맨 것 같습니다. 정확한 해결방법은 이해하지 못하고 일단 프로젝트 resources 폴더를 참조하게 작성하고 다음으로 넘어갔는데 다른 분들은 다 잘되었는지 궁금하네요.

좋은 코드 독서

좋은 코드 독서를 한 것 같은 부분이 몇 가지 있었는데요. 먼저 처음에 통째로 구현한 SqlService에서 SQL을 읽어오는 SqlReader와 읽어온 SQL을 저장했다가 클라이언트에 제공하는 SqlRegistry라는 다른 역할을 분리해 내는 것부터 새로운 시각이었습니다. 그리고 더 나아가서 SqlReader와 SqlRegistry가 데이터를 주고 받을 때 저도 Map을 그냥 주고 받게 했을 것 같은데 SqlReader에게 SqlRegistry를 콜백처럼 던져서 하나씩 등록하게 하는 방법이 정말 신선했습니다. 코드 독서를 많이 하라고 선배들이 많이 얘기해 주는데 좋은 코드 독서가 된 것 같습니다. 이외에도 가장 기본적인 기능을 제공하는 클래스를 BaseXXX 클래스라고 정의하고 가장 기본적인 설정을 제공하는 DefaultXXX 클래스라고 네이밍하는 것도 작은 코드 학습이 된 것 같습니다.

DI란 결국 미래를 프로그래밍하는 것

책 중간에 ‘DI란 결국 미래를 프로그래밍 하는 것이다’ 라는 말이 나오는데 7장까지 오면서 지금까지 내용을 뭔가 한 마디로 요약해 주는 명언 같았습니다. 미래의 변경을 생각하고 DI를 염두해서 프로그래밍하는 방법을 계속 실천하고 연습해 보려합니다. 인터페이스 분리 원칙을 설명하면서 오브젝트를 바라보는 창이라고 표현해 주신 부분도 되게 인사이트를 주는 기억해 두어야 할 말 같았습니다.

정책과 관례를 이용한 프로그래밍

그리고 책을 읽다보면 제가 뭔가 어렴풋하게 개념을 가지고 있던 것을 명쾌하게 설명해 주는 것들을 종종 만나는데 어노테이션을 사용한 프로그래밍을 정책과 관례을 이용한 프로그래밍이라고 설명해 주신 부분을 읽으며 어노테이션이 무엇을 기반으로 뻗어나가는지 되게 명쾌하게 정리가 되었습니다.

2. 모임 중 인상 깊은 말들

  • 어떤 생각으로 이런 스타일의 예제를 작성하시는지? 간단하게 그냥 동작하는 코드를 구현하고, 테스트를 통해 점차 개선하고 확장해 나가는 것이 나의 평소의 개발하는 패턴인 것 같다.
  • 스프링을 만든 사람들도 어느날 갑자기 대단한 영감을 받아서 만든 것이 아니라 조금씩 스텝을 밟아가며 점점 개선해 나간 것일 거다.
  • Spring Boot에서 Spring에서 제공하는 수 많은 빈에 디폴트 설정을 제공하고 있다.
  • 어떨 때는 코드를 작성하는 방법이 명확하면 코드를 먼저 작성하기도 합니다. 코드를 어떻게 작성해야할 지 잘모르겠다하면 무조건 테스트를 먼저 작성하곤 합니다. TDD를 하지 않아도 테스트를 빠르게 작성하려고 노력합니다. 너무 뻔한 CRUD를 만드는데 테스트를 먼저 작성하지는 않습니다. 돈이 연관된다하면 무조건 TDD!
  • XML은 스키마를 통해 XML 작성이 잘 되었는지 런타임 전에 확인이 좋은데 JSON 같은 경우 그런 면에서 조금 약한감이 있다.
  • 어노테이션 기반 빈 설정을 하면 어려운 부분 중 하나는 빈들의 관계가 한 군데 모여 있지 않아서 보기 어려운 단점이 있기는 합니다.

3. 관련 참조

profile
소프트웨어 엔지니어, 일상
post-custom-banner

0개의 댓글