토비의 스프링 ‘7장 스프링의 핵심 기술의 응용’을 읽고 모임 중 나누고 싶은 내용 및 인상 깊은 이야기들을 정리합니다.
선생님께 자랑하고 싶은 학생의 마음 같은 건데, 3장 템플릿/콜백을 배운 이후에 현업에서 만나는 코드들이 모두 템플릿과 콜백으로 나누어져서 보이기 시작하더라구요. 마치 당구 처음 배우면 천장에 당구대가 보인다는 느낌이랄까요? 변하는 것과 변하지 않는 것을 나누고 변하는 값이든 코드든 파라미터로 넘기는 방식을 사용하며 코드에서 놀라운 변화가 생기는 것 같습니다.
1권 막바지를 향해 달려가고 있어서 그 동안의 학습 패턴을 한 번 뒤돌아 보았습니다. 다른 분들은 어떤지 모르겠는데 저는 삶에서 약간의 오버페이스를 유지하지 않으면 진도를 따라가기 어려웠습니다. 특히 6장과 7장은 제대로 학습하면서 한 주만에 읽기가 어렵더라구요. 이번 주 7장을 읽으면서는 조금 지치는 마음이 들어서 의도적으로 반만 읽으려고 조금 편안한 마음을 가지고 읽었습니다. 완주하는 것도 중요하니까요.
저는 7장 초반에 JAXB 컴파일러를 사용해서 코드를 생성하고 JAXBContext를 생성하는 부분이랑 SQL문이 담긴 XML 설정 파일 경로를 참조하는 부분이 잘 안되서 한참 해맨 것 같습니다. 정확한 해결방법은 이해하지 못하고 일단 프로젝트 resources 폴더를 참조하게 작성하고 다음으로 넘어갔는데 다른 분들은 다 잘되었는지 궁금하네요.
좋은 코드 독서를 한 것 같은 부분이 몇 가지 있었는데요. 먼저 처음에 통째로 구현한 SqlService에서 SQL을 읽어오는 SqlReader와 읽어온 SQL을 저장했다가 클라이언트에 제공하는 SqlRegistry라는 다른 역할을 분리해 내는 것부터 새로운 시각이었습니다. 그리고 더 나아가서 SqlReader와 SqlRegistry가 데이터를 주고 받을 때 저도 Map을 그냥 주고 받게 했을 것 같은데 SqlReader에게 SqlRegistry를 콜백처럼 던져서 하나씩 등록하게 하는 방법이 정말 신선했습니다. 코드 독서를 많이 하라고 선배들이 많이 얘기해 주는데 좋은 코드 독서가 된 것 같습니다. 이외에도 가장 기본적인 기능을 제공하는 클래스를 BaseXXX 클래스라고 정의하고 가장 기본적인 설정을 제공하는 DefaultXXX 클래스라고 네이밍하는 것도 작은 코드 학습이 된 것 같습니다.
책 중간에 ‘DI란 결국 미래를 프로그래밍 하는 것이다’ 라는 말이 나오는데 7장까지 오면서 지금까지 내용을 뭔가 한 마디로 요약해 주는 명언 같았습니다. 미래의 변경을 생각하고 DI를 염두해서 프로그래밍하는 방법을 계속 실천하고 연습해 보려합니다. 인터페이스 분리 원칙을 설명하면서 오브젝트를 바라보는 창이라고 표현해 주신 부분도 되게 인사이트를 주는 기억해 두어야 할 말 같았습니다.
그리고 책을 읽다보면 제가 뭔가 어렴풋하게 개념을 가지고 있던 것을 명쾌하게 설명해 주는 것들을 종종 만나는데 어노테이션을 사용한 프로그래밍을 정책과 관례을 이용한 프로그래밍이라고 설명해 주신 부분을 읽으며 어노테이션이 무엇을 기반으로 뻗어나가는지 되게 명쾌하게 정리가 되었습니다.