Spring AOP对嵌套方法不起作用的解决方法
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章为大家展示了Spring AOP对嵌套方法不起作用的解决方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Spring AOP对嵌套方法不起作用今天在
千家信息网最后更新 2026年11月02日Spring AOP对嵌套方法不起作用的解决方法
本篇文章为大家展示了Spring AOP对嵌套方法不起作用的解决方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
Spring AOP对嵌套方法不起作用
今天在调研系统操作记录日志时,好多教程都是借助于Spring AOP机制来实现。于是也采用这种方法来实现。在Service中的删除日志方法上注解自定义的切点,但是执行没有生效。
代码如下:
//尝试删除溢出日志 public synchronized void tryDelOverflowLog() { logNum++; if (logNum - LogConst.MAX_NUM > 0) { int delNum = logNum - LogConst.MAX_NUM + LogConst.EXTRA_NUM; logNum -= delNum; removeOverflowLog(delNum); } } //日志溢出后,删除最新入库的日志 @ServiceLog(type = LogConst.TYPE_LOG_RECORD, description = "操作日志缓存区溢出,系统自动清空缓存区") public void removeOverflowLog(int delNum) { custLogMapper.removeOverflowLog(delNum); }在使用 Spring AOP 的时候,我们从 IOC 容器中获取的 Service Bean 对象其实都是代理对象,而不是那些 Service Bean 对象本身,也就是说获取的并不是被代理对象或代理目标。当我在自己的 Service 类中使用 this 关键字嵌套调用同类中的其他方法时,由于 this 关键字引用的并不是该 Service Bean 对象的代理对象,而是其本身,故 Spring AOP 是不能拦截到这些被嵌套调用的方法的。
要解决这个问题
最简单的方法是把自身注入到自身,用注入的这个自身去调用本方法。或者你也可以不用spring aop而是用aspectj weaving,倒是可以测底的解决该问题。我采用的是把自身注入到自身中。
/** * 通过注入自身解决,Spring AOP嵌套调用不生效的问题 */ @Autowired private ApplicationContext applicationContext; private LogService self; @PostConstruct private void init() { self = (LogService) applicationContext.getBean("logService"); } //尝试删除溢出日志 public synchronized void tryDelOverflowLog() { logNum++; if (logNum - LogConst.MAX_NUM > 0) { int delNum = logNum - LogConst.MAX_NUM + LogConst.EXTRA_NUM; logNum -= delNum; self.removeOverflowLog(delNum); } }Spring AOP、嵌套调用失效及解决
加入注解
@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
获取当前代理的接口
public interface ICurrentAopProxyService{ default T getCurrentProxyService() { return (T) AopContext.currentProxy(); }}
需要嵌套调用的Service实现它

调用的时候改写代码
public SysMerchantVersion selectByMerchantId(Long merchantId) { return getCurrentProxyService().getOne(new QueryWrapper() .lambda() .eq(SysMerchantVersion::getMerchantId, merchantId)); } 上述内容就是Spring AOP对嵌套方法不起作用的解决方法,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
方法
日志
对象
代理
作用
问题
代码
关键
关键字
内容
技能
时候
注解
知识
系统
而是
存区
尝试
简明
简明扼要
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网产品
互联网 科技公司
青岛互联网科技公司
凡科互联网科技
九亚互联网科技
壕鑫互联网络科技
上海致骋互联网科技
天下捷融互联网科技
撒么互联网科技公司
互联网 科技馆
天速互联网络科技有限公司
宁波青枫互联网科技有限公司
阿里巴巴算科技企业还是互联网
福建科技产业互联网发展
未来五年的互联网科技
互联网在线教育科技创业
佛山市拉法互联网科技有限公司
玉溪新华互联网科技好不好
浙南科技城互联网大厦招聘
陕西彩京云互联网科技有限公司
互联网核心科技是什么
金诺互联网科技
互联网科技与金融科技
安徽鑫晟辉互联网科技
互联网科技ppt模板
掌上梦互联网科技
阿里巴巴算科技企业还是互联网
互联网科技和信息
互联网高科技行业有哪些企业
深圳互联网科技园地址