Spring实战(四)面向切面的Spring(AOP)

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

一.什么是面向切面编程

            1.切面提供了取代继承和委托的另一种方案,很多地方使代码更加简洁,在使用切面编程时,我们在一个地方定义通用的功能,通过声明的方式定义这个功能在何处应用,无需修改受影响的类。横切关注点可以被模块转化为特殊的类,这些类被称为切面。优点:关注点都集中在一个地方,而不是分散到多个代码中;服务模块更加简洁,他们只包含主要关注点的代码,而次要关注点的代码被转移到切面。

            2.定义AOP术语:

                         1).通知(advice):有些地方会叫增强处理(更加形象一点),AOP框架在特定的切入点执行                                                                                的增强处理。

                                                                          Spring中有五种类型的通知:

                                                                                                前置通知;后置通知;返回通知;异常通知;环绕通知;

                      2).连接点(Join point):程序执行过程中明确的点,如方法的调用,或者异常的抛出。Spring                                                                                        AOP中,连接点总是方法的调用。

                        3)切点(Pointcut):可以插入增强处理的连接点。简而言之,当某个连接点满足指定要求时,该连                                                                        接点将被添加增强处理,该连接点也就变成了切入点。

                        4).切面(Aspect):切面是通知和切点的结合。通知和切点共通定义了切面的全部内容----它是什么,                                                                 在何时和何处完成其功能。也就是应用运行过程中的关注点,关注点可以横切多                                                                  个 对象,常常也成为横切关注点

                        5).引入(Introduction):允许我们向现有的类添加新方法和属性。Spring允许引入新的接口到任何                                                                               被处理的对象。

                        6).织入(Weaving):是把切面应用到对象并创建新的代理对象的过程。切面在指定的连接点被织入 到目标对象中。在目标对象的生命周期中有多个点可以进行织入:编译期 (AspectJ的织入编译器);类加载期:切面在目标类加载到JVM时被织入。 这种方式需要类加载器(ClassLoader),它可以在目标类在被引入应用之前增强该目标类的字节码。运行期:切面在应用运行到某个时刻被织入。一 般情  况 下,在织入切面时,AOP容器会在目标对象动态地创建一个代理对象。 Spring AOP就是以这种方式织入切面的。

         3.Spring对AOP的支持:Spring和AspectJ之间有大量的协作。Spring提供了四种类型的AOP支持:1>基  与 代理的经典Spring AOP;2>纯POJO切面;3>@AspectJ注解驱动的切面;4>注入式Aspectj切面(适用于Spring各个版本)。

猜你喜欢

转载自blog.csdn.net/weixin_40132006/article/details/80743788
今日推荐