본문 바로가기

프로그래밍

SpringFramework의 Converter를 이용하여 업로드된 파일을 객체로 변환해보자 (3) 지난 글에서는 MultipartFile 클래스 객체를 우리가 원하는 VO 클래스(FileVO 클래스)로 변환하는 Converter 인터페이스를 구현한 클래스에 대해 살펴보았다. 이번은 마지막 글로 이렇게 만든 Converter 인터페이스를 구현한 클래스를 어떻게 사용하는지에 대해 알아보자. MultipartFile 클래스 객체를 FileVO 객체로 변환하는 작업은 웹페이지에서 데이터를 전송해서 이를 객체로 Binding 하는 과정에서 일어나게 된다. 즉 데이터 전송시 파일을 업로드 했으면 이를 FileVO 객체로 변환한뒤 이를 Controller의 메소드에서 사용되어지는 것이다. 그렇기 때문에 이러한 역할을 하는 Converter 인터페이스를 구현한 클래스는 Spring의 Servlet Context에 ..
SpringFramework의 Converter를 이용하여 업로드된 파일을 객체로 변환해보자 (2) 지난번 글에서는 업로드 된 파일의 정보를 어떤 구조의 클래스 형태로 바꾸어서 진행할것인지, 그리고 이 작업을 하기위해 사용될 기존 JDK에서 제공되는 PropertyEditor 클래스와 SpringFramework에서 제공되는 Converter 인터페이스에 대해 알아보았다. 이번 글에서는 실제로 이 Converter 클래스를 통해 변환작업을 수행하는 내용에 대해 알아보도록 하겠다. 이전 글에서 업로드 된 파일을 저장하고 있는 MultipartFile 클래스 객체를 이전 글에서 별도로 정의한 FileVO 클래스로 저장할 것이라고 언급했었고 그 반대, 즉 FileVO 클래스 객체를 MultipartFile 클래스 객체로의 변환은 할 수 없다고 언급하면서 Converter 인터페이스를 반드시 양방향을 모두 구..
SpringFramework의 Converter를 이용하여 업로드된 파일을 객체로 변환해보자 (1) 최근에 XML을 이용하여 Spring 운영 환경을 설정하는 방식에서 Java Configuration 방식으로 운영 환경 설정을 바꾸어가고 있다. 실행 착오도 몇번 있었지만 역시 코드로 환경을 설정한다는건 여러모로 유용한 점이 많아서 일단 계속 파보고 있다. 기존 MVC 환경 설정은 이제 다 끝내서 일종의 템플릿화 작업까지 마쳐진 상태인데 그 과정에서 Spring Converter Interface를 이용한 파일 업로드 방식을 구현한 것이 있어서 이번에 이와 관련된 글을 남기고자 한다. 우리가 Spring MVC에서 파일 업로드 기능을 넣을 경우 이 2가지 중 하나는 했을 것이다. 1. Spring Controller에서 @RequestParam 어노테이션을 사용하여 사용자가 업로드 한 파일을 Multi..
Hibernate에서의 CompositeUserType 사용에 대한 주의점.. 요즘 들어 Hibernate를 공부하다보니 점점 응용학습을 하는 시간을 갖게 되는데 이번 글에서는 CompositeUserType에 대한 설명을 좀 해보고자 한다. 현재 내가 하는 샘플은 기존 Mybatis를 연동해서 만드는 게시판을 Hibernate로 연동하는 방법으로 바꾸고 있다. 그래서 바꾸는 작업을 하던 중에 CompositeUserType을 사용하고 있는 상황을 만들게 되었다. 게시판을 만들다보면 작성일시와 수정일시를 넣어야 하는 부분이 있다. 비단 게시판 뿐만 아니라 작성일시와 수정일시 컬럼은 다른 테이블에서도 자주 사용되는 컬럼이다. 그래서 이 컬럼을 CompositeUserType을 사용해서 특정 타입으로 재정의를 하고 싶어졌다. 그래서 다음과 같이 재정의를 했다 import java.io..
Map과 VO(Value Object)의 해묵은 논쟁과 나의 결론.. 프로그래머란 생활을 10여년 가까이 하면서 프로그래머들간에 이런저런 논쟁을 하게 되는 상황을 종종 보게 된다. 논쟁이란 것이 결론이 나는 것도 있고 그렇지 않은 것도 있다보니 진행중인 논쟁은 언제나 있기 마련이다. ORM 방식의 개발과 SQL 방식의 개발중 어느것이 나은가?, 왜 SpringFramework에 종속적이어야 하는가 등등 직간접적으로 몇가지 접하는 논쟁이 있다. 오늘은 그 중 데이터 전달을 Map으로 하는게 나을지, VO로 하는게 나을지에 대해 좀 얘기해보고자 한다. 먼저 이 논쟁이 나온 배경에 대해 이해를 할 필요가 있어 이 부분을 설명해보도록 하겠다. 우리가 어떤 엔티티(엔티티는 설계상의 용어이므로 잘 이해가 안되는 분은 클래스라고 생각하시길 바란다)를 구체화한 객체를 전송할때 이런식으로..
Spring Security 3.2.4 적용에서 겪은 세션 동시성 관련 로그인 버그와 해결책.. 요즘 Spring Framework를 Java를 이용하는 환경 설정을 적용해보면서 기존에 내가 블로그에 올렸던 Spring Security 또한 Java로 환경설정 하는 식으로 적용해보고 있다. 이와 관련된 글도 블로그로 따로 올릴 예정이다. 그러나 아직은 정리를 좀더 해야 할 부분이 있어서 일단은 적용 과정에서 겪은 내용 중 하나를 써볼까 한다. 처음 블로그에 글을 썼을 당시의 Spring Security 버전이 3.2.4여서 일단 이것으로 Java Config도 적용해보기로 했다. Spring Security Reference 문서와 기타 문서들, 그리고 구글링을 통해 기존 DB로 인증관리 하는 식으로의 XML 설정들을 모두 Java로 바꾸는데 얼추 정리가 되었다. 정리가 되다보니 몇몇 기능을 확인하..
Maven에서 Tomcat을 실행시켜 결과를 확인해보자.. 기존에 Maven을 이용해서 Spring MVC를 개발할때는 어떤식으로는 WAS가 자신의 컴퓨터에 설치되어 있어야 했다. Tomcat이든 JBoss든..아마 대부분 Tomcat을 설치해서 하겠지만.. 근데 Eclipse에서 Tomcat 기반으로 개발할땐 불편한점이 몇몇 있었다. 프로젝트 설정에서 Deployment Assembly의 속성을 건드려줘야 하고 또 pom.xml에서 dependency 태그에 있는 javax.servlet.servlet-api와 javax.servlet.jsp-api를 주석처리를 했다가 다시 war로 배포할때는 주석처리한것을 지워야 했다(scope를 provided로 해도 tomcat 기동시 오류 발생..) 그래서 이런 불편한 점을 없애볼려고 시도한것이 Jetty를 이용해서 빌..
Spring 3.1의 Controller에서 Custom Annotation을 파라미터로 이용했을때의 Map 클래스 받는 법 최근에 Spring 3.2와 마이플랫폼 연동을 하는 과정을 하면서 애로사항을 겪은 것이 있어서 이 포스트를 통해 정리하게 되었다. Controller에서 메소드의 파라미터에 Custom Annotation을 이용하여 사용자가 보낸 값을 받을때 Map으로 받는 것에 문제가 있었다. 이렇게 얘기하면 와 닿지가 않을수도 있을것 같아 예를 들어보도록 하겠다. 흔히 Controller의 메소드에서 파라미터를 사용할때 다음과 같이 상황에 맞는 적절한 어노테이션을 사용하게 될 것이다. public String getList(@RequestParam(name="no") int no) throws Exception 이렇게 파라미터를 받아다가 변수에 바로 설정하는 식의 방법을 많이 사용할것이다. 위의 예에서는 int 형으..