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包

联盟包

Spring7-SpringAOP入门

ApectJ

Spring7-SpringAOP入门

Spring7-SpringAOP入门

1.2 应用(用注解来写)

1.2.1 切面类

封装可复用的交叉业务方法(要注入到目标方法的切面方法)

Spring7-SpringAOP入门

1.2.2 切入点

[]代表可省略

Spring7-SpringAOP入门

Spring7-SpringAOP入门Spring7-SpringAOP入门

Spring7-SpringAOP入门

Spring7-SpringAOP入门

Spring7-SpringAOP入门

前置通知+切入点表达式:切面中的该方法,会自动织入到满足切入点表达式的目标方法之前执行

Spring7-SpringAOP入门

1.2.3 约束头

Spring7-SpringAOP入门

Spring7-SpringAOP入门

Spring7-SpringAOP入门

1.2.4

Spring7-SpringAOP入门

动态代理生成的实现类与接口兼容;与接口的其他实现类不兼容,是平级的

Spring7-SpringAOP入门

Spring7-SpringAOP入门

1.3 cglib

把接口删了,用的就是cglib

Spring7-SpringAOP入门

二、五种通知

3.1 方法控制

加个do,只织入do开头的方法

Spring7-SpringAOP入门

3.2 前置通知

Spring7-SpringAOP入门

3.3 后置通知

只能获取目标方法的返回值,不能真正修改目标方法的返回值,如下

Spring7-SpringAOP入门

后置通知

Spring7-SpringAOP入门

3.4 环绕通知(最强大,可以代替其他所有类型)

可以真正修改目标方法的返回值,有异常可以try—catch

Spring7-SpringAOP入门

3.5 异常通知

类似于try—catch,但try是异常类小的写前面,父类写后面,只执行一个异常从小到大的顺序

而这个异常都会捕获,都会执行

Spring7-SpringAOP入门

Spring7-SpringAOP入门

3.6 最终通知

Spring7-SpringAOP入门

三、五种通知(配置来写)

3.1前置

Spring7-SpringAOP入门

3.2 后置

Spring7-SpringAOP入门

3.3 环绕

必须要带参数,所以returning可以不写

Spring7-SpringAOP入门

3.4 异常

Spring7-SpringAOP入门

Spring7-SpringAOP入门

3.5 最终