ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [토비의 스프링 3.1 Vol.1] 3장 템플릿
    Java/Spring Framework 2018. 1. 4. 22:45

      [사족]

      3장은 이제 한 3번째 보는 것 같다. 역시나 새로운 것은 마찬가지다. 예전에 실습 했던게 조금 기억은 나긴하지만. p.241에 콜백을 설명하면서 "자바에선 메소드 자체를 파라미터로 전달할 방법은 없기 때문에 메소드가 담긴 오브젝트를 전달해야 한다. 그래서 펑셔널 오브젝트(functional object)라고도 한다."라고 나온다. 이제는 람다가 가능하여 메소드 조각도 파라미터로 전달 가능한 시대가 왔다. 토비의 스프링3가 2010년, 지금 내 책의 초판 인쇄가 2012년인걸 보니 격세지감이 느껴졌다. 그런데 나는 왜 아직도 완독을 못한걸까?

     

      [내용]

      3장의 목차

    3.1 다시 보는 초난감 DAO

    3.2 변하는 것과 변하지 않는 것

    3.3 JDBC 전략 패턴의 최적화

    3.4 컨텍스트와 DI

    3.5 템플릿과 콜백

    3.6 스프링의 JdbcTemplate

    3.7 정리

     

      예제 코드는 계속 이어진다. 이번 장에서는 템플릿을 설명하기 위해 DAO에서 Data Access하는 부분에 맞추어 개선시켜 나간다. 개선의 과정은 항상 더 객체지향적으로 만드는 것이다. 중복은 없애고 응집도는 높이는 등이다. 그래서 중복된 예외처리가 들어가는 Data Access의 과정을 메소드 분리 -> 템플릿 메소드 패턴 적용 -> 전략 패턴 적용 순으로 개선시켜 나간다. 그리고 코드의 응집도를 위해 템플릿/콜백 패턴을 이용하여 분리시킨다. 또한 중간에 로컬클래스 -> 익명 내부 클래스로 바꾸는 과정도 나온다. 여기서 또 한번 람다의 중요성을 느꼈다. 익명 내부 클래스 형태로 기본 4줄 이상의 상투적인 코드가 들어가는 것을 람다 한 줄로 바꿀 수 있기 때문이다.

      직접 개선한 JdbcContext를 스프링 곳곳에 숨겨진 템플릿/콜백 패턴의 하나인 JdbcTemplate로 변경해 나간다. 로직과 관련없는 예외처리나 기타 자잘한 부분들은 숨기고, 핵심 로직들은 한 눈에 볼 수 있게 바뀐다. RestTemplate도 이름 뒤에 Template이 붙은걸 보니 템플릿/콜백이 적용된 것 같다.

    댓글

Designed by Tistory.