Java面向切面~AOP剖析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/han_xiaoxue/article/details/79817086

AOP的概念

首先说java是面向对象编程,OOP可以看出是一个纵向的抽离定义开发。那么在实际开发当中,很多时候我们会出现,重复的代码横向地散布在所有对象层次中。这样导致大量代码重复,不利于重用。

那么AOP是面向切面编程,采取这个机制可以来弥补OOP的不足。面向切面顾名思义,就是将那些与具体业务逻辑无关,却被调用或封装起来使用的部分,进行横切处理。
这里写图片描述

需要特别提到的是,连接点(joinpoint)也就是被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器。

Spring对AOP的支持

spring对aop的支持是依赖IOC(控制反转:IOC不是一种技术,而是一种设计思想。它是将原本应用程序主动创建对象的控制权交出,反转成接收IOC容器创建的对象。好处是所有的类的创建、销毁都由 spring来控制)来生成的,默认使用Java动态代理来创建AOP代理,这样就可以为任何接口实例创建代理了。当需要代理的类不是代理接口的时候,Spring会切换为使用CGLIB代理,也可强制使用CGLIB。

例如在我们常用的service中,很多方法是需要设置事务的。就可以采用aop代理来实现。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/han_xiaoxue/article/details/79817086
今日推荐