[자체해결 질문내용 수정] spring 3.1 RedirectAttributes 관련 질문
- 작성자 :
- 문*덕
- 작성일 :
- 2015-03-31 16:40:02
- 조회수 :
- 1,813
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
원인을 찾았습니다.
첨부해드린 dispatcher-servlet.xml 을 보시면
interceptor 부분이 있는데 이 부분을 주석처리하면 정상적으로 작동합니다.
이부분은 DefaultAnnotationHandlerMapping 클래스와 함계 작동이 되는 부분이라고 전자정부 wiki에서 봤습니다.
개인적인 생각으로는 현재 dispatcher-servlet 이 Spring 3 이후 와 이전의 클래스(bean)이 혼합되어 주입되어 있습니다.
그래서 RequestMappingHandlerAdapter 와 RequestMappingHandlerMapping 를 직접 주입해주면 에러가 발생합니다.
그런데 제가 해결한 방법은
현재 dispatcher-servlet 상태에서
1. <mvc:annotation-driven />를 선언해 주거나
( RequestMappingHandlerAdapter 와 RequestMappingHandlerMapping는 삭제)
2. RequestMappingHandlerAdapter 와 RequestMappingHandlerMapping를 주입하고
<mvc:interceptor> 를 사용하면 정상적으로 작동합니다.
여기서 궁금한 점은
mvc 태그를 사용하지 않고서는 처리할 수 없다는 점이네요..(1번과 2번 각각 mvc 태그 사용)
2번처럼 두 클래스만 넣고 작동시키고 싶거든요..
Spring 3 이후 deprecate 된 클래스를 사용하지 않는게 나은 거겠죠?(1번과 2번 모두 정상적으로 작동되긴 합니다.)
제가 설정한 것이 아니다보니.. RedirectAttributes 사용하기 위해서는 아무래도 1번의 방식으로 처리해야 할 것 같아서요
첨부해드린 dispatcher-servlet.xml 을 보시면
interceptor 부분이 있는데 이 부분을 주석처리하면 정상적으로 작동합니다.
이부분은 DefaultAnnotationHandlerMapping 클래스와 함계 작동이 되는 부분이라고 전자정부 wiki에서 봤습니다.
개인적인 생각으로는 현재 dispatcher-servlet 이 Spring 3 이후 와 이전의 클래스(bean)이 혼합되어 주입되어 있습니다.
그래서 RequestMappingHandlerAdapter 와 RequestMappingHandlerMapping 를 직접 주입해주면 에러가 발생합니다.
그런데 제가 해결한 방법은
현재 dispatcher-servlet 상태에서
1. <mvc:annotation-driven />를 선언해 주거나
( RequestMappingHandlerAdapter 와 RequestMappingHandlerMapping는 삭제)
2. RequestMappingHandlerAdapter 와 RequestMappingHandlerMapping를 주입하고
<mvc:interceptor> 를 사용하면 정상적으로 작동합니다.
여기서 궁금한 점은
mvc 태그를 사용하지 않고서는 처리할 수 없다는 점이네요..(1번과 2번 각각 mvc 태그 사용)
2번처럼 두 클래스만 넣고 작동시키고 싶거든요..
Spring 3 이후 deprecate 된 클래스를 사용하지 않는게 나은 거겠죠?(1번과 2번 모두 정상적으로 작동되긴 합니다.)
제가 설정한 것이 아니다보니.. RedirectAttributes 사용하기 위해서는 아무래도 1번의 방식으로 처리해야 할 것 같아서요
A
안녕하세요. 문종덕님.
Spring 3.x 이후 mvc 라는 XML 설정 의한 Interceptor 처리를 권장하고 있습니다.
DefaultAnnotationHandlerMapping,SimpleUrlAnnotationHandlerMapping 해당 객체의 선언방법 및 순서가 이 틀린거 같습니다.
<!-- 로그인 체크가 필요한 URL과 로그인 여부를 체크해줄 인터셉터를 등록한다. -->
<bean id="selectAnnotaionMapper" class="egovframework.rte.ptl.mvc.handler.SimpleUrlAnnotationHandlerMapping" p:order="1">
<property name="interceptors">
<list>
<ref local="authenticInterceptor" />
</list>
</property>
<property name="urls">
<set>
<value>/*.do</value> <!-- 해당하는 do 만 기술 -->
</set>
</property>
</bean>
<!-- ReqeustMapping 과 Controller 클래스 매핑을 위한 annotation mvc 설정 -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:order="2"/>
Spring 3.x 이후 mvc 라는 XML 설정 의한 Interceptor 처리를 권장하고 있습니다.
DefaultAnnotationHandlerMapping,SimpleUrlAnnotationHandlerMapping 해당 객체의 선언방법 및 순서가 이 틀린거 같습니다.
<!-- 로그인 체크가 필요한 URL과 로그인 여부를 체크해줄 인터셉터를 등록한다. -->
<bean id="selectAnnotaionMapper" class="egovframework.rte.ptl.mvc.handler.SimpleUrlAnnotationHandlerMapping" p:order="1">
<property name="interceptors">
<list>
<ref local="authenticInterceptor" />
</list>
</property>
<property name="urls">
<set>
<value>/*.do</value> <!-- 해당하는 do 만 기술 -->
</set>
</property>
</bean>
<!-- ReqeustMapping 과 Controller 클래스 매핑을 위한 annotation mvc 설정 -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:order="2"/>