控制器类获得“处理程序适配器的方面:您的处理程序是否实现了像Controller这样的支持接口”?

时间:2013-11-19 09:48:11

标签: spring spring-mvc aop aspectj spring-aop

我有一个没有实现任何接口的控制器,我正在尝试为该控制器编写方面,但它抛出异常“没有适配器用于处理程序:你的处理程序是否实现了像Controller这样的支持接口?”

public class OrderController extends BaseController{

@RequestMapping("/secure/admin/loadOrders.do")
public ModelAndView loadOrders(@ModelAttribute("orders") final Order order,BindingResult bindResult,final HttpServletRequest httpServletRequest, final HttpServletResponse httpServletResponse){
               // code


}

}

我已经为控制器编写了日志记录方面

@Aspect
public class LoggingAspect {

@Before("execution(* com.cgt.web.admin.controller.OrderController.*(..))")
public void logBefore(JoinPoint joinPoint) {
    System.out.println("beforecalling method");
}

}

Web.xml中

<context-param>
<param-name>contextConfigLocation</param-name>
    <param-value>
       /WEB-INF/beans/commons/application-context.xml
             </param-value>
         <servlet>  
            <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/beans/web/Controller-Beans.xml</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet> 

在application-context.xml中定义了LoggingAspect bean

<mvc:annotation-driven />
<bean id="logAspect" class="com.cgt.aspect.LoggingAspect" />
   <aop:aspectj-autoproxy proxy-target-class="true"/>

仍然像上面提到的那样“没有处理程序适配器异常”。

1 个答案:

答案 0 :(得分:0)

您的配置看起来不太合适。如上所述,您的<mvc:annotation-driven />配置需要进入您的MVC配置,您应该包括您的方面:

<aop:aspectj-autoproxy>
    <aop:include name="logAspect"/>
</aop:aspectj-autoproxy>

此外,这里有simple logging example using AOP and Spring,它应该显示绳索。它还针对MVC控制器。