문제점을 몇가지 짚어보자.
- HttpServletResponse에 의존적이다. 그냥 File로 바로 변환하려면 어떻게?
- Test는 어떻게?
첫번째 문제를 해결하기 위해서 interface로 변환하고, HttpServletResponse를 사용하던 것을 OutputStream으로 변경해 보자.
그러면 이런 형태가 될 것이다.
이걸 이쁘게 implements 한 class를 만들면 된다.그러면 이런 형태가 될 것이다.
구현 순서는 다음과 같을 것이다.
- Header 생성(column은 구분해줘야 하니까...)
- List을 순회하면서 각 항목을 reflection을 사용해서 String[] 타입으로 변환
- CSVWriter에 List<String[]> 데이터 타입을 보내서 outputStream에 쓰기
그런데 위 작업이 이미 충분히 추상화 되어 있기 때문에 굳이 interface를 또 사용할 필요까지는 없는 것 같다.(실컷 다 작업하고 나서야 그 사실을 깨달았다 이런)
아무튼 그래서 2가지 방법으로 구현해봤다.유연한 쪽은 아무래도 interface를 활용한쪽일 것이다.
1,2,3은 공통으로 사용될 부분이라 java8에 추가된 interface의 default method를 활용했다.
소스는 여기에 있다.
댓글 없음:
댓글 쓰기