복붙노트

[SPRING] 핸들러 예외에 대한 어댑터가 없습니다.

SPRING

핸들러 예외에 대한 어댑터가 없습니다.

나는 스프링 MVC 프레임 워크를 사용하여 웹 애플리케이션을 개발 중이다. 나는 annotation과 beanName 기반의 url 매핑을 원한다.

컨텍스트 파일에 다음 구성이 있습니다.

<mvc:annotation-driven />

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

내 주석 기반 컨트롤러가 잘 작동하지만 beanNamed 기반 URL 매핑에서 "처리기 용 어댑터 없음"예외가 발생합니다.

여기서 내가 뭘 잘못하고 있니?

고맙습니다

해결법

  1. ==============================

    1.기본적으로 spring mvc는 3 개의 다른 요청 처리기 어댑터를 정의합니다.

    기본적으로 spring mvc는 3 개의 다른 요청 처리기 어댑터를 정의합니다.

    org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
    

    따라서 컨텍스트 파일에 정의 할 필요는 없지만 컨텍스트 파일에 적어도 하나의 핸들러 어댑터를 정의하면 Spring은 기본 어댑터를 만들지 않습니다.

    당신의 설정에서 을 사용하고있다.이 봄 문서에 따르면 컨텍스트가 DefaultAnnotationHandlerMapping과 AnnotationMethodHandlerAdapter를 정의하게된다. 컨텍스트 정의 스프링에서 AnnotationMethodHandlerAdapter를 생성하므로 다른 두 개의 handlerAdapter가 생성되지 않습니다. 그래서 당신이 말한 예외를 받고있다.

    beanNameUrlMapping에는 handlerAdapter SimpleControllerHandlerAdapter가 필요합니다.

    이 예외를 해결하려면 컨텍스트에서 "SimpleControllerHandlerAdapter"유형의 새 bean을 간단히 만들면됩니다.

    <bean
        class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter">
    </bean>
    
  2. ==============================

    2.스프링 MVC 2.5와 스프링 웹 플로우를 통합하려고 할 때도 똑같은 일이 발생했습니다. 웹 플로우의 경우, 구성 파일에는 FlowHandlerdAdapter를, MVC에는 아무 것도 지정하지 않았습니다. 따라서 위와 같이 문제를 해결할 simplecontrollerhandleradapter 유형의 BEAN을 정의해야합니다.

    스프링 MVC 2.5와 스프링 웹 플로우를 통합하려고 할 때도 똑같은 일이 발생했습니다. 웹 플로우의 경우, 구성 파일에는 FlowHandlerdAdapter를, MVC에는 아무 것도 지정하지 않았습니다. 따라서 위와 같이 문제를 해결할 simplecontrollerhandleradapter 유형의 BEAN을 정의해야합니다.

  3. from https://stackoverflow.com/questions/3896013/no-adapter-for-handler-exception by cc-by-sa and MIT license