springAOP面向切面编程

AOP简单介绍

AOP采用横向抽取机制取代了纵向继承,不破坏原有的类,生成一个代理类,在原来的类上增强,可随时添加,取消添加的功能。

AOP实现原理

JDK动态代理
cglib动态代理
AOP自动在内部实现这两种代理,当有接口时就会使用JDK动态代理,没有接口时就会使用cglib动态代理.

AOP相关专业专业术语

连接点:可以被拦截的方法,可以被增强的方法,这些方法被称为连接点
切入点:真正被拦截的方法,真正被增强的方法
通知:增强的内容,通常将这些内容封装到一个方法中,这个方法就称为通知
引介:类层面的增强,给原有的类增加一些属性方法
被增强的对象:被增强的对象
织入:将通知应用到目标对象的过程
代理对象:内部动态代理生成的对象
切面:多个通知和多个切入点的集合

Spring中AOP的使用

1.引入spring基本jar包
2.引入AOP开发的jar包
springAOP面向切面编程

3.配置文件中引入aop约束
springAOP面向切面编程

4.spring测试springAOP面向切面编程

5.测试
springAOP面向切面编程

6.编写一个切面类
springAOP面向切面编程

7.将切面交给spring
springAOP面向切面编程

8.配置aop完成对目标产生代理
springAOP面向切面编程

AOP通知类型

1.前置通知
springAOP面向切面编程
在方法执行前添加通知
2.后置通知
springAOP面向切面编程
在方法执行后添加通知,可以获取方法执行后的返回值
3.环绕通知
springAOP面向切面编程
相当于一个事务操作,可以控制切入点是否执行
4.异常通知
springAOP面向切面编程
当抛出异常是添加的通知,可以获取异常值
5.最终通知
springAOP面向切面编程
无论是否出现异常都会被执行的通知

AOP切入点表达式

基于execution函数完成

语法:【访问修饰符】方法返回值 包名.类名.方法名(参数)
1.public com.itlike.demo1.GoodsDaoImpl.save(…)
参数为任意参数
2.* com.itlike.demo1.GoodsDaoImpl.save(…)
任意类型
3.* com.itlike.demo1.GoodsDaoImpl+save(…)
当前类和子类
4.* com.itlike….(…)
com.itlike包下以及子包所有类的所有方法
springAOP面向切面编程

AOP注解方式ApsectJ开发

1.引入jar包
springAOP面向切面编程

2.引入配置文件
springAOP面向切面编程

3.编写切面类配置
springAOP面向切面编程

4.使用注解的aop对象目标类进行增强
springAOP面向切面编程

5.注解aop通知类型
@Before @AfterReturning @Around @[email protected]与上面配置文件里的通知类型相同,不懂作用的建议翻到上面反复查看。下面简单介绍一下使用方法:
springAOP面向切面编程
springAOP面向切面编程
springAOP面向切面编程
springAOP面向切面编程

6.aop的注解切入点的配置

7.定义多个切入点

8.使用接口与不使用接口内部代理区别