4.3 AOP-XML-的expose-proxy和proxy-target-class

戴着假发的程序员出品  抖音ID:戴着假发的程序员  欢迎关注

[查看视频教程]

expose-proxy是用来配置是否暴露代理bean的。在注解方式中已经解释过这个属性。

这里稍微说一下。

如果有下面的情况:

在业务类内部的方法printMessage中调用formatMessage方法,那么两个方法是否都会被增强。

默认情况下只会增强printMessage方法,内部的this.formatMessage是不会被增强的。因为this是目标对象,而不是代理对象。

如果希望内部调用的formatMessage也被增强,就要给将expose-proxy配置为true,然后在内部这样调用:

proxy-target-class属性是用来配置AOP产生代理对象时的代理模式的。

springAOP的代理方法无所谓是注解还是XML配置,默认情况下都是查看目标类是否有实现任何接口,如果实现接口则使用JDK代理方式,如果没有实现接口,就使用CGLib方式。

当然有些情况下我们可能需要强制要求使用CGLib,这时在XML配置方式我们可以使用aop:aspectj-autoproxy属性proxy-target-class修改为true,强行要求spring使用CGLib进行动态代理。

 

posted @ 2020-10-30 17:35  戴着假发的程序员0-1  阅读(674)  评论(0编辑  收藏  举报