码迷,mamicode.com
首页 > 编程语言 > 详细

Spring入门篇——AOP基本概念

时间:2018-10-03 23:32:49      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:数据库   tran   before   之间   就是   int   http   处理   统一   

 

 

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实现方式

技术分享图片

技术分享图片

 

Spring入门篇——AOP基本概念

标签:数据库   tran   before   之间   就是   int   http   处理   统一   

原文地址:https://www.cnblogs.com/songsongblue/p/9735835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!