springmvc方法解释器(MultiActionController)使用aop无效

    springmvc的MultiActionController类是一个年代比较久远的类了,现在几乎没人用了。
    但公司里有些老项目是这样做的,现在要增加一个日志记录的功能,很自然的想到用aop来做。但是不管是用aspectj还是实现advice还是其他的什么方法都不能生效,而且是既不报错也不生效,很头疼,只能自己找源码分析。
通过查看源码发现,MultiActionController的一个最重要的方法是handleRequestInternal,代码如下:

/**
	 * Determine a handler method and invoke it.
	 * @see MethodNameResolver#getHandlerMethodName
	 * @see #invokeNamedMethod
	 * @see #handleNoSuchRequestHandlingMethod
	 */
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
   
		try {
   
			String methodName = this.methodNameResolver.getHandlerMethodName(request);
			return invokeNamedMethod(methodName, request, response);
		}
		catch (NoSuchRequestHandlingMethodException ex) {
   
			return handleNoSuchRequestHandlingMethod(ex, request, response);
		}
	}

    看起来invokeNamedMethod方法中会有些线索:

/**
	 * Invokes the named method.
	 * <p>Uses a custom exception handler if possible; otherwise, throw an
	 * unchecked exception; wrap a checked exception or Throwable.
	 */
	protected final ModelAndView invokeNamedMethod(
			String methodName, HttpServletRequest request, HttpServletResponse response) throws Exception {
   

		Method method = this.handlerMethodMap.get(methodName);
		if (method == null) {
   
			throw new NoSuchRequestHandlingMethodException(methodName, getClass());
		}

		try {
   
			Class<?>[] paramTypes = method.getParameterTypes();
			List<Object> params = new ArrayList<Object>(4);
			params.add(request);
			params.add(response);

			
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值