zoukankan      html  css  js  c++  java
  • spring-AOP原理

    AOP

      aop概述

    1.aop:面向切面(面向方面)编程,扩展功能不通过修改源代码实现

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

      aop底层原理

    1.创建一个Base类,让原来的类继承此类,实现纵向抽取机制(父类的方法发生变化,子类也要改变)

    2.横向机制:底层使用动态代理的方式实现

      第一种情况:写一个接口,定义一个方法,写一个实现类实现这个接口的方法    -----使用动态代理方式,创建接口代理对象:创建和实现类平级对象,这个对象不是真正的对象,代理对象实现了和实现类一样的功能

    第二种:使用cglib动态代理,没有接口的情况,创建子类的代理对象来增强

      aop操作相关术语

     AspectJ是一个面向切面的框架,不是spring的一部分,它要和spring一起使用进行aop的操作;spring从2.0以后增加了对AspectJ的支持

    使用AspectJ实现aop由2中

      基于AspectJ的xml配置

      基于AspectJ的注解方式

    AOP操作的准备工作

    除了导入最基本的jar包外,还需要导入aop相关的jar包

    创建spring的核心配置文件,加入aop的约束

    使用一个表达式来配置切入点

      1.切入点,实际增强的方法

      2.常用的表达式

    execution(<访问修饰符>?<返回类型><方法名><参数><异常>)

    配置aop操作

    <aop:config>

      <!--1.配置切入点-->

    <aop:pointcut  expression=" " id=" "/>

      <!--1.配置切面-->

    把增强用到方法上面

    <aop:aspect ref="  ">

      配置增强类型,method:增强类里面使用哪个方法作为前置

    </aop:aspect>

    </aop:config>

  • 相关阅读:
    常见Oracle HINT的用法
    2011年的每一天是周几?
    TOM上关于JOIN跟+号的讨论
    关于index_ffs使用索引的一点问题.
    数据库中分组字符串相加
    国服3.3.5:死亡骑士全系DPS饰品收益评分
    WLK狂暴战怎么玩
    3.3萨满手册
    关于clob类型在函数中的处理。
    pivot_clause [Oracle SQL]
  • 原文地址:https://www.cnblogs.com/1218-mzc/p/8047104.html
Copyright © 2011-2022 走看看