약 한달전에 RequestMappingHandlerMapping에 문제가 있어보인다는 포스팅을 했었고, http://javaiyagi.tistory.com/357
jira에 등록하였다. https://jira.springsource.org/browse/SPR-10574
그리고 KSUG 에도 올렸다.
https://groups.google.com/forum/#!topic/ksug/uSkVWfkvwkI
어제, 오늘 JIRA에 Phil과 Rossen이 답글을 달아주었다..
Phil Webb added a comment - 26/Jun/13 12:23 PM
필 : defaultHandler 는 핸들러어댑터가 @Controller 클래스를 핸들링 하기 위해 사용된다. 그런데 Spring 3.1에선 그렇지 않다.
너는 RequestMappingHandlerAdapter 가 defaultHandler 를 처리하게 하기 위해서 HandlerMethod로 래핑 하게 할 수 있다.
너의 homeController는 실질적으로 뭐니?
로센 : 너의 DefaultController 가 명확하지않다. 내가 추측하기론 annotated controller 인거같다(@Controller) . 그렇다면 Phil 이 맞다.
너는 @Controller annotated class 를 DefaultHandler 로 등록할 수 없다.
HandlerMethod 또는 non annotated 여야 한다. 이미 언급했듯이 HttpRequestHandler 나 Controller 를 구현하여야한다.
또한, @RequestMapping(value="/**", RequestMethod.GET) 으로 해도 된다.
라고 해석을 했는데,, 영어실력이 짧아서 필이 남긴 댓글이 약간 헷갈린다...
어쨌든, 3.1에선 3.0 방식에서처럼은 하면 안된다는 거 같은데,,, 그렇다면 주석이 추가되거나
@Deprecated되어야 하는게 맞는건지, 아니면 어쨌든 쓸수는 있으니까 걍 놔두는게 맞는건지 좀 애매한듯하다..
하여 나도 댓글을 달았다..
bin choi added a comment - 27/Jun/13 5:25 PM
It's not clear what your DefaultController looks like so I can only speculate that it is an annotated controller. In that case Phil is correct, you can't set the default handler to an annotated class. Either it has to be a HandlerMethod or you can use a non-annotated handler such as an implementation of HttpRequestHandler or Controller.