스프링: DI 와 객체 지향 설계를 적극적으로 응용

→ 결과: 스프링은 템플릿/콜백 패턴을 적극적으로 활용

스프링을 사용하는 개발자라면 스프링이 제공하는 템플릿/콜백 기능을 잘 사용할 수 있어야 한다. 동시에 템플릿/콜백이 필요한 곳이 있으면 직접 만들어 사용할 줄도 알아야 한다. 스프링에 내장된 원리도 모르는 채 사용하는 경우와 적용된 패턴을 이해하고 사용하는 경우는 큰 차이가 있다.

조언

테스트와 try/catch/finally

  public Integer calcSum(String filepath) throws IOException {
    BufferedReader br = null;
    try {
      br = new BufferedReader(new FileReader(filepath));
      Integer sum = 0;
      String line = null;
      while ((line = br.readLine()) != null) { // 계산
        sum += Integer.valueOf(line);
      }
      return sum;
    } catch (IOException e) { // 예외 처리
      System.out.println(e.getMessage());
      throw e;
    } finally { // 자원 반환
      if (br != null) {
        try {
          br.close();
        } catch (IOException e) {
          System.out.println(e.getMessage());
        }
      }
    }
  }
  1. 만들어진 모든 리소스는 확실히 정리하고 빠져나오도록 한다.
  2. 모든 예외 상황에 대해 적절히 처리하도록 해준다.

중복 제거와 템플릿/콜백 설계

추가 요구사항 발생

템플릿/콜백 패턴을 적용하자.

  1. 템플릿에 담을 반복 작업 흐름은 무엇이 될까.