zoukankan      html  css  js  c++  java
  • Spring入门篇——AOP基本概念

     

     

    1、什么是AOP及实现方式

    什么是AOP

    • AOP:Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术
    • 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等

    AOP实现方式

    • 预编译

      -ApectJ

    • 运行期动态代理(JDK动态代理、CGLib动态代理)

      -SpringAOP、JbossAOP

    2、AOP基本概念

    连接点:比如一个类中某个方法执行的开始

    通知:在某个方法执行的时候,额外执行的切面的动作

    切入点:如何在切面中去匹配一个具体的连接点

    引入:源代码中并没有这样的方法和属性,通过修改字节码文件为类增加新的方法和属性

    目标对象:比如说我们有订单service和商品service,切面会通知所有的service在去执行数据库操作的时候,去加上事务的控制,这两个sevice就是目标对象,也就是被切面所通知的对象

    Advice的类型

    前置通知:比如说这个连接点是一个方法,那么前置通知就是在方法之前执行的,在进入到方法之前执行的

    返回后通知:在某个方法执行完成并返回值后再去执行的通知

    抛出异常后通知:当某个方法抛出异常之后才会被执行到的通知

    3、Spring中的AOP

    Spring框架中AOP的用途

    • 提供了声明式的企业服务,特别是EJB的替代服务的声明(EJB是企业级javabean)
    • 允许用户定制自己的方面,以完成OOP(面向对象编程,实现一个功能的顺序)与AOP(横切的方式,在各个功能之间横切的功能)的互补使用

    Spring的AOP实现

    有接口和无接口的Spring Aop实现区别

    4、Schema-based AOP

    配置切面aspect

    配置切入点Pointcut

    Spring AOP、AspectJ都支持

     只有Spring AOP支持

    例子1:

    例子2:

    配置一个完整的<aop:config>

      前置通知

    声明Before advice的两种方式

     在返回之后的通知

    pointcut-ref :引用某一个切入点

    method:在After returning advice这个通知上要执行的方法是什么样

    returning="retVal":限制返回值

    抛出异常之后返回

     返回的通知:在返回之后或者可以理解是方法结束前的最后一条代码取执行after advice,无论方法是否正常结束,after advice都会被执行

     环绕通知

    通知里面使用参数的方式

     Introductions

    配置

    Advisors的配置

    5、Spring AOP API

     

    ProxyFactoryBean及相关内容

     ProxyFactoryBean通过以下方式来达到代理的目的

    6、AspectJ

    AspectJ注解的具体使用

     

    任何包的类下面只要有transfer方法,都会匹配这个切入点anyOldTransfer

    切入点支持哪些种定义方式或者哪些个点可以定义

    定义两个连接点(切入点)

    切入点1:执行com.imooc.aop.aspect.biz包下面所有以Biz结尾的类的任何类型的方法的时候,都会匹配当前的切入点

    切入点2:当前这个包下的任何类都会匹配到这个切入点

    执行所有public类型方法的时候会匹配这个切入点

    如何定义良好的切入点?

    在aspectj中advice的定义

    例子

    使用advice的两种方式

    1.直接定义一个execution的表达式

    2.使用一个已经存在的pointcut,也就是引用一个已经定义好的切入点

     

     Advice扩展应用

    Introductions实现方式

  • 相关阅读:
    拖拽 上传文件
    复制文本消息
    zTree 显示为‘aa’,当选择aa时,传的参数为‘22’
    移动端 动画 启动硬件加速
    jquery 停止动画与切换
    CSS小技巧-怎样让每行多余的文字显示文省略号?
    CSS小技巧-两个盒子之间的间距问题
    CSS小技巧-为内盒子添加margin-top时,会带着父盒子一起下来,如何解决?
    小K的H5之旅-CSS基础(一)
    小K的H5之旅-HTML的基本结构与基本标签
  • 原文地址:https://www.cnblogs.com/songsongblue/p/9735835.html
Copyright © 2011-2022 走看看