2017년 5월 1일 월요일

Reflection을 이용해서 CSV Writer를 만들어보자 #2

지난 글에서 java의 reflection을 이용해서 CSV Writer를 간단히 만들어 봤다.

문제점을 몇가지 짚어보자.

  1. HttpServletResponse에 의존적이다. 그냥 File로 바로 변환하려면 어떻게?
  2. Test는 어떻게?

첫번째 문제를 해결하기 위해서 interface로 변환하고, HttpServletResponse를 사용하던 것을 OutputStream으로 변경해 보자.


그러면 이런 형태가 될 것이다.

이걸 이쁘게 implements 한 class를 만들면 된다.
구현 순서는 다음과 같을 것이다.

  1. Header 생성(column은 구분해줘야 하니까...)
  2. List을 순회하면서 각 항목을 reflection을 사용해서 String[] 타입으로 변환
  3. CSVWriter에 List<String[]> 데이터 타입을 보내서 outputStream에 쓰기

그런데 위 작업이 이미 충분히 추상화 되어 있기 때문에 굳이 interface를 또 사용할 필요까지는 없는 것 같다.(실컷 다 작업하고 나서야 그 사실을 깨달았다 이런)


아무튼 그래서 2가지 방법으로 구현해봤다.
유연한 쪽은 아무래도 interface를 활용한쪽일 것이다.

1,2,3은 공통으로 사용될 부분이라 java8에 추가된 interface의 default method를 활용했다.

소스는 여기에 있다.

댓글 없음:

댓글 쓰기