Spring MVC 的Controller切面拦截不起作用?

1 问题描述

当使用Spring AOP对Controller层的Controller类的方法进行切面拦截,不起作用。AOP配置没有任何问题。

2 排查过程

  1. Spring AOP配置没有任何问题;【正常】
  2. 断点调试:Spring源码断点调试,在调用Controller方法时,Controller的实例被JDK进行动态代理了;【不正常】
  3. Spring默认的代理方式为JDK动态代理;【正常】

3 解决问题

AOP有的人说拦截不到Controller。有的人说想拦AnnotationMethodHandlerAdapter截到Controller必须得拦截org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

首先AOP可以拦截到Controller的,这个是毋容置疑的,其次须拦截AnnotationMethodHandlerAdapter也不是必须的。最起码我没有验证成功过这个。这个方式就不在这儿介绍说明了。

AOP之所以有的人说拦截不到Controller, 原因是该注解的Controller已被spring容器内部代理了。我们只要把它交给cglib代理就可以了。Spring MVC的配置文件dispatcher-servlet.xml:

复制代码
<!-- 通知spring使用cglib而不是jdk的来生成代理方法 AOP可以拦截到Controller --> 
<aop:aspectj-autoproxy proxy-target-class="true" />
相关推荐
90后小陈老师10 分钟前
用户管理系统 05 实现后端注册功能 | Java新手实战 | 最小架构 | 期末实训 | Java+SpringBoot+Vue3
java·开发语言·spring boot·后端·spring·maven·mybatis
q***071410 分钟前
MySQL无法连接到本地localhost的解决办法2024.11.8
数据库·mysql·adb
j***630823 分钟前
【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目
java·spring boot·spring
n***265631 分钟前
Windows环境下安装Redis并设置Redis开机自启
数据库·windows·redis
马克学长34 分钟前
SSM美丽华驾校信息管理系统t93d7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·驾校信息管理系统·ssm 框架
张人玉1 小时前
HandyControl使用方法
数据库·计算机视觉·handycontrol
u***27611 小时前
【MySQL】环境变量配置
数据库·mysql·adb
daidaidaiyu1 小时前
Spring Aware 接口
spring
m***56721 小时前
【Spring】Spring MVC案例
java·spring·mvc
风123456789~1 小时前
【OceanBase专栏】OceanBase 外部表实验
数据库·笔记·oceanbase