昨天,在工作中通过AOP创建进程权限控制时,遇到了一个问题,AOP创建的代理对象和bean无论我如何调整它们总是为空。起初我以为AOP影响了创建和注入。我不断地检查并停止豆子。我和同事通过一一创建日志来调试这个问题。因为晚上打算回家,所以睡不着,于是又开始查资料,发现是因为SpringBoot插入了该服务。找到博主的帖子后插入了null_springboot服务。我发现原来的word_list方法的修饰符是private的。改成公开就正常了。我敏锐地意识到自己在这里的不足,所以我想先把问题记录下来,然后再补充我的代理相关知识。
总结:
AOP 不能代理私有方法。 Spring AOP是基于代理实现的,主要有两种代理方法。
JDK动态代理:基于接口实现,只有实现该接口的类和方法才能被代理。 CGLIB代理:基于子类实现,代理类是目标类的子类,可以代理没有实现接口的类和方法,但不能代理私有方法,因为它们对子类不可见。
Spring AOP在代理过程中只能拦截public和protected方法,而不能拦截private方法。私有方法在Java中是不可见的,因此代理对象无法访问这些方法。
上述关于#aop创建的代理类注入的服务为空的情况的信息应仅参考相关内容源网络。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93147.html