@EnableAspectJAutoProxy的exposeProxy属性和proxyTargetClass属性

Posted 八阿哥克星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@EnableAspectJAutoProxy的exposeProxy属性和proxyTargetClass属性相关的知识,希望对你有一定的参考价值。

把@EnableAspectJAutoProxy的exposeProxy设为true,是暴露代理对象的意思,也就是可以通过设置这个属性,用AopContext.currentProxy()的方式获取到当前的代理对象,可以解决同一类中两个方法相互调用是aop不生效的问题

 

@Component
public class MessageService 
    public String showMessage(String info) 
        System.out.println("OtherInfoServcie-showMessage展示信息:" + info);
        //this.formartMsg(info)这样调用,aop增强不会生效
        //通过设置@EnableAspectJAutoProxy的exposeProxy设为true,再使用AopContext				                        
        //的静态方法获取当前的代理对象
        ((MessageService) AopContext.currentProxy()).formartMsg(info);
        return null;
    

    public String formartMsg(String info) 
        System.out.println("OtherInfoServcie-formartMsg对象消息" + info + "进行格式化");
        return info;
    

proxyTargetClass=true的作用是要生成代理对象时强制使用CGLIB的方式。

以上是关于@EnableAspectJAutoProxy的exposeProxy属性和proxyTargetClass属性的主要内容,如果未能解决你的问题,请参考以下文章

@EnableAspectJAutoProxy的exposeProxy属性和proxyTargetClass属性

@EnableAspectJAutoProxy的exposeProxy属性和proxyTargetClass属性

Springboot源码分析之EnableAspectJAutoProxy

SpringBoot#aop

Spring高级话题-@Enable***注解的工作原理

对Spring AOP的进一步深入理解