三大框架 之 Spring-Aop
本文内容纲要:
- AOP- AOP简介
- 开发存在 的问题
- JDK动态代理
- cglib动态代理
- Spring的AOP简介
- AOP相关术语
- Joinpoint:连接点
- Pointcut:切入点
- Advice:通知
- Introduction:引介
- Target:被增加的对象
- Weaving:织入
- Proxy:代理对象
- Aspect:切面
- Spring中AOP使用
- AOP通知类型
- 前置通知
- 后置通知
- 环绕通知
- 异常抛出通知
- 最终通知
- AOP切入点表达式
- 基于execution函数完成
- 语法
- AOP注解方式ApsectJ开发
- 引入Jar包
- 引入配置文件
- 编写切面类配置
- 使用注解的AOP对象目标类进行增强
- 注解AOP通知类型
- AOP的注解切入点的配置
- 定义多个切入点
- 当使用接口时与不使用接口内部代理区别
目录
AOP
AOP简介
- 开发存在 的问题
- JDK动态代理
- cglib动态代理
- Spring的AOP简介
AOP相关术语
- Joinpoint:连接点
- Pointcut:切入点
- Advice:通知
- Introduction:引介
- Target:被增加的对象
- Weaving:织入
- Proxy:代理对象
- Aspect:切面
Spring中AOP使用
AOP通知类型
- 前置通知
- 后置通知
- 环绕通知
- 异常抛出通知
- 最终通知
AOP切入点表达式
- 基于execution函数完成
- 语法
AOP注解方式ApsectJ开发
引入Jar包
引入配置文件
编写切面类配置
使用注解的AOP对象目标类进行增强
- 在配置文件中开启以注解形式进行AOP开发
- 在切面类上添加注解
注解AOP通知类型
@Before前置通知
@AfterReturning后置通知
- 没有返回值
- 有返回值
@Around环绕通知
@AfterThrowing异常抛出通知
- 没有获取异常信息
- 获取异常信息
@After最终通知
AOP的注解切入点的配置
定义多个切入点
当使用接口时与不使用接口内部代理区别
- 使用接口
- 不使用接口
AOP
AOP简介
- 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,
- 通过预编译方式和运行期动态代理,实现程序功能的统一维护的一种技术。
- AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。
- 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
开发存在 的问题
JDK动态代理
cglib动态代理
- Cglib是一个第三方开源代码
- 生成类库,动态添加类的属性和方法。
- 在spring的核心包当中已经引入了cglib
- 采用的是继承方式来产生的代理对象
Spring的AOP简介
AOP思想最早是由AOP联盟组织提出的
Spring使用这种思想最好的框架
AspectJ
Spring的AOP有自己的实现方式,但是这种方式非常繁琐
AspectJ是一个AOP的框架
Spring放弃了自己传统的方式 ,引入AspectJ作为自身AOP的开发
AOP相关术语
Joinpoint:连接点
- 可以被拦截到的方法
- 能够被增强的方法,这些方法就可以称为是连接点
Pointcut:切入点
- 真正被拦截的方法
- 真正被增加的方法
Advice:通知
增加的内容,通常都是封装成一个方法, 这个方法我们就称为通知
Introduction:引介
- 类层面的增加
- 给原有的类添加一些新的属性方法
- 在开发中通常都是给方法进行增加
Target:被增加的对象
Weaving:织入
将通知应用到目标对象的过程
Proxy:代理对象
Aspect:切面
多个通知和多个切入点的集合
Spring中AOP使用
1.引入spring基本jar包
2.引入aop开发的相关jar包
3.配置文件中引入aop约束
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
</beans>
4.Spring测试
- 测试时,每次都需要获取工厂
- 通过spring-test,就不用每次获取
- 添加测试依赖包
5.测试
6.编写一个切面类
7.将切面交给spring
8.配置AOP完成对目标产生代理
AOP通知类型
前置通知
在目标方法执行之前进行操作
后置通知
在目标方法执行之后 进行操作
环绕通知
在目标方法执行之前 和之后进行操作
public Object arount()
异常抛出通知
在程序出现异常时进行操作
最终通知
无论代码是否有异常,都会执行
AOP切入点表达式
基于execution函数完成
语法
【访问修饰符】 方法返回值 包名.类名.方法名(参数)public com.myxq.demo2.GoodsDaoImpl.save(..)
参数为任意参数
* com.myxq.demo2.GoodsDaoImpl.save(..)
任意类型
* com.myxq.demo2.GoodsDaoImpl+.save(..)
加上当前类和子类
* com.myxq..*.*(..)
com.myxq包以及子包下面所有类的所有方法
AOP注解方式ApsectJ开发
引入Jar包
引入配置文件
编写切面类配置
使用注解的AOP对象目标类进行增强
在配置文件中开启以注解形式进行AOP开发
在切面类上添加注解
注解AOP通知类型
@Before前置通知
@AfterReturning后置通知
没有返回值
有返回值
@Around环绕通知
@AfterThrowing异常抛出通知
没有获取异常信息
获取异常信息
@After最终通知
AOP的注解切入点的配置
- 有时候一个方法要添加前置通知对又要添加异常通知,又要添加最终通知
- 可以在切面当中定义好切入点
- 在通知当中直接使用定义好的切入点表达式
定义多个切入点
一个通知同时定义到多个方法当中
当使用接口时与不使用接口内部代理区别
使用接口
不使用接口
本文内容总结:AOP,AOP简介,开发存在 的问题,JDK动态代理,cglib动态代理,Spring的AOP简介,AOP相关术语,Joinpoint:连接点,Pointcut:切入点,Advice:通知,Introduction:引介,Target:被增加的对象,Weaving:织入,Proxy:代理对象,Aspect:切面,Spring中AOP使用,AOP通知类型,前置通知,后置通知,环绕通知,异常抛出通知,最终通知,AOP切入点表达式,基于execution函数完成,语法,AOP注解方式ApsectJ开发,引入Jar包,引入配置文件,编写切面类配置,使用注解的AOP对象目标类进行增强,注解AOP通知类型,AOP的注解切入点的配置,定义多个切入点,当使用接口时与不使用接口内部代理区别,
原文链接:https://www.cnblogs.com/mumuyinxin/p/10738868.html
以上是 三大框架 之 Spring-Aop 的全部内容, 来源链接: utcz.com/z/296672.html