Spring7-SpringAOP入门
一、SpringAOP入门代码
AOP是一种思想,很多公司都实现了AOP
Spring框架使用AOP
-
Spring框架自己实现的AOP:
7个基础包+aop联盟包(组织,定制规范,接口,门面)+aop.jar(Spring针对AOP的实现)
-
引入第三方jar包,使用ApectJ实现,Spring推荐使用
7个基础包+aop联盟包(组织,定制规范,接口,门面)+aop.jar(Spring针对AOP的实现)+aspectj.jar(ApectJ针对AOP的实现)+spring-aspectj.jar(Spring做的对ApectJ的整合包)
1.1 添加jar包
联盟包
ApectJ
1.2 应用(用注解来写)
1.2.1 切面类
封装可复用的交叉业务方法(要注入到目标方法的切面方法)
1.2.2 切入点
[]代表可省略
前置通知+切入点表达式:切面中的该方法,会自动织入到满足切入点表达式的目标方法之前执行
1.2.3 约束头
1.2.4
动态代理生成的实现类与接口兼容;与接口的其他实现类不兼容,是平级的
1.3 cglib
把接口删了,用的就是cglib
二、五种通知
3.1 方法控制
加个do,只织入do开头的方法
3.2 前置通知
3.3 后置通知
只能获取目标方法的返回值,不能真正修改目标方法的返回值,如下
后置通知
3.4 环绕通知(最强大,可以代替其他所有类型)
可以真正修改目标方法的返回值,有异常可以try—catch
3.5 异常通知
类似于try—catch,但try是异常类小的写前面,父类写后面,只执行一个异常从小到大的顺序
而这个异常都会捕获,都会执行
3.6 最终通知
三、五种通知(配置来写)
3.1前置
3.2 后置
3.3 环绕
必须要带参数,所以returning可以不写