springAOP面向切面编程
Spring-AOP 面向切面编程
AOP简单介绍
AOP采用横向抽取机制取代了纵向继承,不破坏原有的类,生成一个代理类,在原来的类上增强,可随时添加,取消添加的功能。
AOP实现原理
JDK动态代理
cglib动态代理
AOP自动在内部实现这两种代理,当有接口时就会使用JDK动态代理,没有接口时就会使用cglib动态代理.
AOP相关专业专业术语
连接点:可以被拦截的方法,可以被增强的方法,这些方法被称为连接点
切入点:真正被拦截的方法,真正被增强的方法
通知:增强的内容,通常将这些内容封装到一个方法中,这个方法就称为通知
引介:类层面的增强,给原有的类增加一些属性方法
被增强的对象:被增强的对象
织入:将通知应用到目标对象的过程
代理对象:内部动态代理生成的对象
切面:多个通知和多个切入点的集合
Spring中AOP的使用
1.引入spring基本jar包
2.引入AOP开发的jar包
3.配置文件中引入aop约束
4.spring测试
5.测试
6.编写一个切面类
7.将切面交给spring
8.配置aop完成对目标产生代理
AOP通知类型
1.前置通知
在方法执行前添加通知
2.后置通知
在方法执行后添加通知,可以获取方法执行后的返回值
3.环绕通知
相当于一个事务操作,可以控制切入点是否执行
4.异常通知
当抛出异常是添加的通知,可以获取异常值
5.最终通知
无论是否出现异常都会被执行的通知
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包下以及子包所有类的所有方法
AOP注解方式ApsectJ开发
1.引入jar包
2.引入配置文件
3.编写切面类配置
4.使用注解的aop对象目标类进行增强
5.注解aop通知类型
@Before @AfterReturning @Around @[email protected]与上面配置文件里的通知类型相同,不懂作用的建议翻到上面反复查看。下面简单介绍一下使用方法:
6.aop的注解切入点的配置
7.定义多个切入点
8.使用接口与不使用接口内部代理区别