@EnableAspectJAutoProxy的exposeProxy属性和proxyTargetClass属性

本文探讨了如何通过在@EnableAspectJAutoProxy上设置exposeProxy为true,解决类内不同方法间AOP代理失效问题,并重点介绍了proxyTargetClass=true的CGLIB代理作用。

把@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的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值