美文网首页
Spring——AOP底层原理

Spring——AOP底层原理

作者: 戴宏鹏 | 来源:发表于2017-10-05 18:43 被阅读0次

aop采用了横向抽取机制,取代了传统的纵向机制。
底层实现:动态代理方式

什么是纵向抽取机制?

例子:
public class User {
    //添加用户
    public void add() {
        //添加逻辑
        //---------修改源代码,添加日志逻辑---------
    }
}
扩展功能:
添加用户数据后,添加日志功能(记录在什么时间添加哪个用户)
纵向抽取机制解决:
public class BaseUser {
    //创建日志添加的方法
    public void writeLog() {
        //添加日志逻辑
    }
 }

 public class User extends BaseUser {
     public void add() {
         //添加逻辑
         //功能拓展,添加日志功能,调用父类方法实现日志功能
         super.writeLog();
    }
 }
如果父类的方法名称发生变化,子类中调用的方法也需要变化

什么是横向抽取机制?

情况一:使用jdk动态代理,针对有接口情况

public interface Dao {
    public void add();
}

public class DaoImpl  implements Dao {
    public void add() {
         //添加逻辑
    }
}

目的:增强add()方法

使用动态代理方式
创建 接口实现类代理对象,与DaoImpl类平级
实现和DaoImpl相同的功能


情况二:使用cglib动态代理,没有接口情况

public class User {
    public void add() {
    }
}


创建User类的子类的代理对象
在子类里面调用父类的方法完成增强

相关文章

网友评论

      本文标题:Spring——AOP底层原理

      本文链接:https://www.haomeiwen.com/subject/darfyxtx.html