본문 바로가기

스프링

Spring Framework의 ContentNegotiatingViewResolver에 대하여... (1) 3월달에서 시작한 프로젝트가 6월에 마무리가 되었다. 업체명과 어떤일을 했는지 상세하게 말할수 없지만 이번에 했던 일은 웹사이트 구축이 아니었다. 하드웨어 단말에서 웹URL을 호출하여 리턴되는 XML이나 JSON 또는 Text 문자열을 파싱하여 그에 따른 결과값으로 작업을 하는 일이다. 어찌보면 Open API와 비스무리한 일을 했다. 이번에 이 프로젝트의 아키텍처 역할을 하면서 Spring 기반으로 작업을 진행했는데 이때 사용했던 기술을 언급하고자 한다. 업무의 기술적인 큰 요구는 2가지였다 1) 단말이 원하는 데이터를 XML, Json, 또는 Plain Text로 받아야 한다. 단 이때 호출하는 URL이 리턴받는 데이터 타입에 따라 다른 형태면 안된다(사실 이 조건은 필수적인 조건은 아니었으나 업무를..
Spring Framework의 메시지 컨버터를 이용한 FileDownload 구현(3) 이제 마지막으로 File을 처리하는 메시지 컨버터를 Spring 환경설정에 추가해주는 일이 남았다. 예전글에서 얘기했듯이 태그를 추가하면 사용자가 만든 메시지 컨버터를 추가할 수 없다. 그래서 태그를 빼고 수동으로 일일이 설정해줘야 하는데 무엇을 설정해야 하는지는 여기를 클릭해서 참조하길 바란다. 수동으로 설정하는 부분에 보면 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter 클래스를 bean으로 설정하는 부분이있다. 여기에 보면 messageConverters 프로퍼티를 설정하는 부분이 있는데 여기에 사용자가 만든 메시지 컨버터를 추가해주면 된다 messageConverters 프로퍼티를 설정하는 부분을 보면 여러..
Spring Framework의 메시지 컨버터를 이용한 FileDownload 구현(2) 일단 메시지 컨버터가 무엇인지에 대한 설명이 필요할것 같다. 일반적으로 Spring MVC를 이용해서 컨트롤러에 값을 주고 받을때는 HTTP 요청 프로퍼티를 분석하여 그에 따라 특정 클래스로 바인딩이 되게끔 하고 컨트롤러에서 특정 객체를 Model Object에 집어 넣어 View를 리턴하는 식으로 주고받게 된다. 그러나 메시지 컨버터는 그런 개념이 아니라 HTTP 요청 메시지 본문과 HTTP 응답 메시지 본문을 통째로 하나의 메시지로 보고 이를 처리한다. Ajax를 통해 XML이나 JSON 문자열을 주고 받을때를 보면 짐작할수 있을 것이다. Spring MVC에서 이러한 작업을 하는데 사용되는 어노테이션이 바로 @RequestBody와 @ResponseBody이다. @RequestBody를 이용하려 파..
Spring Framework의 메시지 컨버터를 이용한 FileDownload 구현(1) 토비의 Spring 3를 보다가 메시지 컨버터의 ByteArrayHttpMessageConverter를 보게 되었다. 설명을 요약하자면 Controller에서 함수가 @ResponseBody 를 사용하여 byte []를 리턴하면 컨텐트 타입을 application/octet-stream으로 설정하여 Response에 byte []를 쏴준다는거다. 어라? 이거 파일 다운로드랑 같네. 이런 생각이 들어서 이 부분을 좀더 보게 되었다. 기존에 내가 갖고 있는 Spring 에서의 파일 다운로드 방법은 AbstractView를 상속받은 파일 다운로드 전용 View를 만들어서 컨트롤러에서 이 View를 생성해서 리턴하는 것이었다. 그럼 이 View에서는 Model에 저장되어 있는 다운로드 할 파일 정보를 이용해서 ..
<mvc:annotation-driven />이 설정해주는 Spring 설정 Tag 흔히 Spring Web MVC 프로젝트를 할때 보면 을 많이 설정하는 편이다. 이거 하나를 설정함으로써 Spring Web MVC를 하기 위해 설정해야 하는 값들이 자동으로 추가 되는데 때로는 이것을 쓰지 않고 일일이 관련된 값을 수동으로 넣어야 하는 경우가 있다. 내가 겪은 대표적인 예로는 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter(줄여서 AnnotationMethodHandlerAdapter로 한다)에 메시지 컨버터를 추가해야 하는 상황이 있었는데 mvc 태그에서 별도로 추가를 할 수 있는 태그를 제공하질 않았다.(이 부분은 Spring 3.1에서는 별도 태그가 추가가 된 상태다) 그래서 을 지우고 내가..
나의 Spring Framework 시작.. 개인적으로 Spring Framework(스프링 이라 하겠다)를 시작한지는 정말 얼마 안되었다..아니..정확하게는 스프링을 사용하는 프로젝트를 해본 케이스가 딱 한번뿐이었다. 전자정부 프레임워크로 진행했던 프로젝트였는데 전자정부 프레임워크가 스프링 기반이었다. 스프링을 하기 시작한 계기는 프리로 처음 전향하면서 면접을 본 과정이었다. 집이 안양이었던 관계로 마침 평촌에서 진행하는 프로젝트에 지원을 하게 되었다 그래서 면접을 보았는데..기억하기로는 그 프로젝트가 SK C&C에서 만든 프레임워크 기반으로 하는 프로젝트였다. 그 당시에 난 프레임워크의 필요성에 대해선 공감하고 있었지만 그것을 실무에 적용하는 점에 있어서는 약간의 회의적인 시각이 있었다. 유지보수 차원에서는 프레임워크를 적용한 프로젝트가 훨씬 ..