zoukankan      html  css  js  c++  java
  • AOP技术-01

    1、Spring AOP

        AOP(Aspect Oriented Programming)称为面向切面(方面)编程;AOP主要用于处理共同逻辑,例如:日志记录,安全控制,事务管理,异常处理等,AOP可以将这些共通逻辑从普通业务逻辑代码中分离出来,在以后修改这些共通逻辑时就不会影响普通业务逻辑

        利用AOP可以针对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间的耦合度降低,提高程序的可重用性,同时提高开发效率

        AOP与OOP区别:(不同领域的两种设计思想)

            OOP(面向对象编程)针对业务处理过程中实体的属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分

            AOP(面向切面编程)针对业务处理过程中的切面进行提取,它面对的处理过程中的某个步骤或阶段,以获得逻辑过程中各个部分之间低耦合的隔离效果

      注:AOP需要以OOP为前提和基础

        1)什么是切面

            切面:指封装共通逻辑的组件,此组件被作用到目标组件的方法上

        2)什么是目标

            目标:是被一个或多个切面所作用的对象

        3)什么是切入点

            切入点:是用于指定哪些目标组件的方法使用切面功能

    在Spring中利用一个表达式指定切入点

        1)方法限定表达式

          execution(修饰符? 返回类型 方法名(参数? ) throws 异常类型? )

        2)类型限定表达式

          within(包名.类型)

        3)Bean名称限定表达式

          bean("Bean的ID或name属性值")

    什么是通知

        通知是用于指定切面组件和目标组件作用的时机。例如:切面方法在目标方法之前或之后执行等时机。

    Spring框架提供以下类型的通知:

    前置通知:先执行切面功能再执行目标功能

    后置通知:先执行目标功能再执行切面功能(目标无异常才执行切面功能)

    最终通知:先执行目标功能再执行切面功能(目标有无异常都执行切面功能)

    异常通知:先执行目标功能,抛出异常后执行切面功能

    环绕通知:先执行切面的前置部分,然后执行目标(不能有异常),最后执行切面的后置部分

    AOP实现原理

    Spring AOP实现主要是急于动态代理技术,当Spring采用AOP配置后,Spring容器返回的目标对象实质上是Spring利用动态代理技术生成的一个代理类型,代理类重写了原目标组件方法的功能,在代理类中调用切面对象功能和目标对象的功能

    Spring框架采用两种动态代理实现:

    1)利用cglib工具包

         目标没有提供接口时采用此方法,代理类是利用继承方式生成一个目标子类

    2)利用JDK Proxy API

        目标有提供接口时采用此方法,代理类采用实现目标接口方式生成一个目标子类

    XML配置实现AOP

        开发步骤:

           1)创建一个类,充当切面组件,实现共通逻辑

           2)声明切面组件(在配置文件中)

    <!--在配置文件中开启AOP注解扫描-->
    <aop:aspectj-autoproxy/>

           3)使用切面组件,在配置文件中,将切面组件作用到目标组件方法上,设置通知类型以确认切面组件调用的时机

    注解实现AOP

        开发步骤:

            1)创建切面组件

            2)声明切面组件

    <!--
    使用@Component注解标记(标识)这个类,将其声明为组件
    使用@Aspect注解标记这个类,将其声明为切面组件
    -->

            3)使用切面组件

                在切面组件的方法上,使用注解将切面组件作用到目标组件的方法上,并设置通知类型以确认切面组件作用的时机。

  • 相关阅读:
    Linux系统网络文件配置
    Linux系统修改日期时间
    8、mysql索引
    7、mysql正则表达式、事务、alter命令
    6、mysql数据操作
    5、mysql数据类型
    4、mysql数据库操作
    3、mysql管理
    2、mysql安装
    1、mysql教程
  • 原文地址:https://www.cnblogs.com/xslzwm/p/9596154.html
Copyright © 2011-2022 走看看