본문 바로가기

전체 글

Xplatform과 Spring Framework 연동 템플릿으로 보는 HandlerMethodArgumentResolver와 ViewResolver (10) - 예외처리 이번 글은 이 연재의 마지막으로 해당 템플릿에서의 예외처리에 대해 설명하도록 하겠다. 우리가 만든 Spring Application에서는 이런저런 이유로 예외가 발생할 수 있다. 비즈니스적인 로직으로 인해 발생하는 예외도 있고 Runtime 예외도 있다. 예외가 발생할 경우 try-catch를 이용해서 발생시점에서 해당 예외에 대한 처리를 할 수 있지만 비즈니스적으로 이러한 예외처리를 해야 하는게 아니라면 발생된 예외는 호출한 곳으로 계속 던져지게 된다. 단계별로 예외가 계속 던져지게 되면 최종적으로는 Controller 까지 도달하게 되며 Controller에서도 예외 처리를 안하게 되면 Controller 에서는 다시 예외를 던져서 Spring에서 정해져있는 ExceptionResolver 객체에서 ..
Xplatform과 Spring Framework 연동 템플릿으로 보는 HandlerMethodArgumentResolver와 ViewResolver (9) - XplatformView 분석 이전 글까지는 Xplatform에서 넘어온 DataSetList과 VariableList를 Controller의 메소드 파라미터에서 자바 객체로 변환해주는 HandlerArgumentResolver 인터페이스 구현 클래스에 대해 설명했다. 지금까지의 내용이 Xplatform에서 넘어온 데이터들을 Spring에서 사용하기 위해 적절하게 데이터를 변환한 작업이었고 지금부터 설명한 내용은 Spring에서 나온 데이터를 Xplatform에서 사용가능한 데이터로 변환하는 작업에 대해 설명하고자 한다. 이해를 돕기 위해 설명하자면 자바에서 제공하는 List 객체로 나온 결과물을 Xplatform에서 제공하는 DataSet 클래스 객체로 변환하는 것이다. 이 부분에서도 또한 Java의 Reflection 기능을 사용..
Xplatform과 Spring Framework 연동 템플릿으로 보는 HandlerMethodArgumentResolver와 ViewResolver (8) - HandlerMethodArgumentResolver 분석(4) 저번 글에서는 HandlerMethodArgumentResolver 인터페이스를 구현한 클래스인 XplatformArgumentResovler 클래스에서 @RequestDataSet 어노테이션이 붙었을 경우에 대한 처리를 설명했다. 이제 3개의 어노테이션 중 마지막인 @RequestVariable 어노테이션에 대한 설명을 하도록 하겠다. 먼저 이 부분에 대한 전체적인 골격에 대한 설명을 하도록 하겠다 else if(annotationClass.equals(RequestVariable.class)) {// @RequestVariable 어노테이션에 대한 처리 RequestVariable requestVariable = (RequestVariable)annotation; String variableName ..
Xplatform과 Spring Framework 연동 템플릿으로 보는 HandlerMethodArgumentResolver와 ViewResolver (7) - HandlerMethodArgumentResolver 분석(3) 저번 글에서는 @DataSet 어노테이션을 이용해서 DataSet 객체를 사용자가 지정한 파라미터 타입으로의 변환에 대한 대강의 윤곽을 잡았다. 약간 요약식으로 여기서 다시 한번 언급한다면 DataSet에 저장되어 있는 insert-update, delete 레코드들을 각각 변환시키는데 이때 사용자가 Collection 인터페이스 계얄 타입으로 파라미터를 설정했는지 확인해서 그 내부에 정의한 Generic 클래스 타입으로 변환한다고까지 얘기했었다. 다만 저번글에서는 이 변환 부분에 대해 구체적인 설명을 하진 않고 XplatformReflectionUtils 클래스에서 정의한 staric 메소드들을 사용하는 것으로 설명했다. 이번글은 이 static 메소드들에 대한 구체적인 설명을 진행해보고자 한다. 이 ..
Xplatform과 Spring Framework 연동 템플릿으로 보는 HandlerMethodArgumentResolver와 ViewResolver (6) - HandlerMethodArgumentResolver 분석(2) 저번 글에서는 HandlerMethodArgumentResolver 인터페이스에서 구현해야 하는 메소드에 대한 설명과 Xplatform 연동 템플릿에서 이 인터페이스를 구현한 클래스에 대한 설명을 진행했다. 저번 글로 설명이 모두 완료가 된것은 아니다. 이 템플릿에서 사용하는 어노테이션 3개 중 @RequestDataSetList 어노테이션에 대한 부분만 설명이 왼료되었다. 이번 글에서는 HandlerMethodArgumentResolver 인터페이스를 구현한 클래스에서 @RequestDataSet 어노테이션에 대한 처리를 설명하고자 한다. 예전 글에서도 언급했듯이 @RequestDataSet 어노테이션은 Xplatform Client가 서버에 전송한 DataSet 중에서 이 어노테이션에 설정한 Da..
Xplatform과 Spring Framework 연동 템플릿으로 보는 HandlerMethodArgumentResolver와 ViewResolver (5) - HandlerMethodArgumentResolver 분석(1) 저번 글에서는 Spring Controller의 메소드 예시를 통해 HandlerMethodArgumentResolver가 하게 되는 역할을 보게 되었다. 이전 글 예시를 보면 Spring Controller의 메소드 파라미터에 특정 어노테이션을 사용하는것만으로도 우리가 기존에 사용하던 방법을 그대로 사용할 수 있다. 저번글이 이번 글에서 하고자 하는 최종적인 목표를 얘기한거라면 이번 글에서는 그 목표를 이루기 위한 과정에 대해 알아보는 시간을 가져보도록 하겠다. 이번 연재글에서 하고자 하는 말들의 시작이라 보면 되겠다. 지금부터 시작하도록 하겠다. 먼저 HandlerMethodArgumentResovler가 하는 역할에 대한 얘기를 잠깐 해보도록 하겠다. 눈치 빠른 사람이면 이전 글을 통해 이 클래스가..
Xplatform과 Spring Framework 연동 템플릿으로 보는 HandlerMethodArgumentResolver와 ViewResolver (4) - Spring Controller에서 하려는 것 저번 글에서는 HttpServeletRequest 클래스의 Wrapper 클래스인 HttpRequestWrapper 클래스의 필요성과 제작 및 설정에 대한 설명을 했다. 이번에는 HttpRequestWrapper 클래스를 통해 전달된 Xplatform의 데이터를 Spring에서 어떻게 사용할 수 있는지에 대해 살펴보도록 하자. Spring MVC 에서는 Web Client가 전달한 데이터를 서버측에서 받아들일때 서버측에서 사용하기 좋은 형태의 타입으로 변환할 수 있다. 이때 사용되는 방법으로 2가지가 있다. HttpMessageConverter HandlerMethodArgumentResolver HttpMessageConverter 와 HandlerMethodArgumentResolver 모두 Spri..
Xplatform과 Spring Framework 연동 템플릿으로 보는 HandlerMethodArgumentResolver와 ViewResolver (3) - HttpServletRequestWrapper 이번 글에서는 이번 템플릿에서 사용하게 될 HttpServletRequestWrapper 클래스에 대해 얘길 해볼까 한다. 이것도 연재하는 내용을 알기 위한 선제지식 성격이 강하긴 한데 이전 글에서 언급하기에는 내용이 긴데다가 이 내용은 이번 템플릿에서뿐만 아니라 다른 상황에서도 쓰일 성격이 다분히 존재하기 때문에 글을 별도로 할당해서 쓰도록 하겠다. Xplatform 같은 Ria Tool 뿐문 아니라 웹브라우저와 같은 웹 클라이언트는 WAS에 접속해서 데이터를전송하게 되면 HttpServletRequest 객체가 생성이 된다. 엄밀하게 말하면 통신이기 때문에 header 정보와 body가 있게 된다. HttpServletRequest 객체에서 header 정보는 언제든 읽어올 수 있지만 body는 일단..