Spring入门篇——AOP基本概念

1、什么是AOP及实现方式

什么是AOP

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

AOP实现方式

  • 预编译

  -ApectJ

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

  -SpringAOP、JbossAOP

2、AOP基本概念

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

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

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

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

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

Spring入门篇——AOP基本概念

Advice的类型

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

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

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

Spring入门篇——AOP基本概念

3、Spring中的AOP

Spring框架中AOP的用途

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

Spring的AOP实现

Spring入门篇——AOP基本概念

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

Spring入门篇——AOP基本概念

4、Schema-based AOP

配置切面aspect

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

配置切入点Pointcut

Spring AOP、AspectJ都支持

Spring入门篇——AOP基本概念

只有Spring AOP支持

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

例子1:

Spring入门篇——AOP基本概念

例子2:

Spring入门篇——AOP基本概念

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

Spring入门篇——AOP基本概念

前置通知

声明Before advice的两种方式

Spring入门篇——AOP基本概念

在返回之后的通知

Spring入门篇——AOP基本概念

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

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

returning="retVal":限制返回值

抛出异常之后返回

Spring入门篇——AOP基本概念

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

Spring入门篇——AOP基本概念

环绕通知

Spring入门篇——AOP基本概念

通知里面使用参数的方式

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Introductions

Spring入门篇——AOP基本概念

配置

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Advisors的配置

Spring入门篇——AOP基本概念

5、Spring AOP API

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

ProxyFactoryBean及相关内容

Spring入门篇——AOP基本概念

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

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

6、AspectJ

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

AspectJ注解的具体使用

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

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

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

Spring入门篇——AOP基本概念

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

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

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

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

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

如何定义良好的切入点?

Spring入门篇——AOP基本概念

在aspectj中advice的定义

Spring入门篇——AOP基本概念

例子

Spring入门篇——AOP基本概念

使用advice的两种方式

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

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

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Advice扩展应用

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

Introductions实现方式

Spring入门篇——AOP基本概念

Spring入门篇——AOP基本概念

上一篇:Linux下的awk文本分析命令实例(一)


下一篇:flare-spork: 自己维护的Pig on Spark项目