当前位置: 首页 > news >正文

Spring AOP拦截失败

内部方法调用绕过AOP

  • 代码
  • 问题分析
  • 解决

代码

使用AOP拦截不到注解标注的方法

public UserRequirement createOrupdate(UserRequirement userRequirement) {if(null == userRequirement.getId()){return this.create(userRequirement);}return this.update(userRequirement);}@UpdateFieldLogpublic UserRequirement update(UserRequirement userRequirement) {//………………………………return returnUserRequirement;}

问题分析

核心问题:this自调用导致代理失效

Spring AOP的实现原理是 基于代理的增强,而通过this关键字进行的内部调用会直接调用目标对象的原始方法,绕过了代理对象,导致切面无法拦截。这是Spring AOP的固有局限性。

解决

通过代理对象调用

public UserRequirement createOrupdate(UserRequirement userRequirement) {if(null == userRequirement.getId() ){return this.create(userRequirement);}return getProxy().update(userRequirement);
}private UserRequirementService getProxy() {return (UserRequirementService) AopContext.currentProxy();
}

相关文章:

  • Spring IOCDI————(2)
  • 如何提灯验车
  • Android13 wifi设置国家码详解
  • 全球机电气缸市场深度洞察:技术驱动与产业升级下的增长机遇(2025-2031)
  • 面试相关的知识点
  • mmaction2——tools文件夹下
  • 从零基础到最佳实践:Vue.js 系列(4/10):《Vue Router 路由管理:深入探索与实战应用》
  • 深入浅出理解时间复杂度和空间复杂度
  • 学习黑客了解密码学
  • UML 活动图 (Activity Diagram) 使用案例
  • 【Java高阶面经:微服务篇】8.高可用全链路治理:第三方接口不稳定的全场景解决方案
  • 【C++】模板下(泛型编程)
  • java面试每日一背 day1
  • 深入解析应用程序分层及 BaseDao 的封装策略
  • 操作系统 第四章 -2
  • 2025上半年软考准考证打印入口已开放!
  • 黑色矩形大于6识别
  • 编程技能:字符串函数09,strncmp
  • Base64加密解密
  • C++:array容器
  • 网站建设课程简介图片/百度网站登录入口
  • 北京家装设计公司/百度搜索关键词排名优化技术
  • html5与css3网页设计论文/杭州seo博客
  • 网站建设后需要录入/谷歌seo工具