spring|Java程序员必知:Spring面试之AOP(JDK动态代理实现)


spring|Java程序员必知:Spring面试之AOP(JDK动态代理实现)
文章图片
spring|Java程序员必知:Spring面试之AOP(JDK动态代理实现)
文章图片
spring|Java程序员必知:Spring面试之AOP(JDK动态代理实现)
文章图片
spring|Java程序员必知:Spring面试之AOP(JDK动态代理实现)
Spring面试之AOP什么是AOP在软件业 , AOP为Aspect Oriented Programming的缩写 , 意为:面向切面编程 , 通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术 。 AOP是OOP的延续 , 是软件开发中的一个热点 , 也是Spring框架中的一个重要内容 , 是函数式编程的一种衍生范型 。 利用AOP可以对业务逻辑的各个部分进行隔离 , 从而使得业务逻辑各部分之间的耦合度降低 , 提高程序的可重用性 , 同时提高了开发的效率 。

对以上描述总结一下 , 在Spring中主要体现为以下几点:

Aspect Oriented Programming
AOP采取了横向抽取机制 , 取代了传统纵向继承体系重复性代码(性能监视、事务管理、安全检查、缓存)

解决问题方法
传统是这样的 , 每次权限校验前 , 进行调用接口的方法 。


纵向继承在没有AOP的时候 , 我们是这样解决权限校验的 , 写一个类 , 里面有权限校验的方法 , 然后子类继承这个类 , 子类里不仅有相关业务操作 , 同时因为继承了父类 , 所以同时有权限校验方法 。 可以对他进行直接调用 。 这样的话 , 只要需要权限校验就必须实现父类 。

横向抽取机制采用横向抽取机制 , 取代传统的继承 。 所谓横向抽取机制 , 就是一个代理机制 , 利用JDK动态代理产生一个代理类 , 在代理类中对相关业务方法进行一个代码增强 。