2、Spring AOP开发
目录
2.3 如何使用Spring AOP开发(AspectJ的XML方式)
2.4 Spring AOP开发(AspectJ的注解方式)
2.1 什么是AOP
在软件业,AOP(Aspect Oriented Programming)面向切面编程,AOP是OOP的延续和扩展,能解决OOP中遇到的一些问题,是软件开发中的一个热点,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的解耦合,提高开发效率。
Spring AOP的由来:AOP最早由AOP联盟的租界提出来的,制定了一套规范,Spring将AOP思想引入到框架中,必须遵守AOP联盟规范。Spring是使用AOP思想最好的框架,Spring的AOP有自己的实现方式(非常繁琐基本不用),AspectJ是一个非常好的AOP框架,Spring就引入AspectJ作为自身的AOP开发。
2.2 为什么学习AOP
在实际开发中对业务功能增强,希望在不修改源代码的情况下完成,而AOP可以完全的胜任此情况。AOP还可以进行权限校验、日志记录、性能监控、事务控制。
2.3 如何使用Spring AOP开发(AspectJ的XML方式)
2.3.1 AOP开发中的相关术语
- Joinpoint:连接点(可以被拦截到的点)
- Pointcut:切入点(真正被拦截到的点)
- Advice:通知、增强(方法层面的增强)
- Introduction:引入(类层面的增强)
- Target:被增强的对象
- Weaving:织入(将通知Advice应用到目标Target过程)
- Aspect:切面(多个通知Advice和多个切入点Pointcut组合)
- Proxy:代理对象
2.3.2 通过配置AOP实现
2.3.3 Spring切入点表达式写法
Spring切入点表达式是基于execution的函数完成的
语法格式:[访问修饰符] 方法返回值 包名.类名.方法名(参数)
举例:
- Public void com.sc.aop.ProductDaoImpl.save(..) //指定包下的指定类方法
- * *.*.*.*DaoImpl.save(..) //指定包层级下的类后缀为DaoImpl下的save方法
- * com.sc.aop.ProductDao+.save(..) //指定包下的当前类及其子类下的save方法
- * com.sc.aop..*.*(..) //指定包及子包下的所有类中的所有方法
2.3.4 Spring的通知类型
前置通知:在目标方法执行之前进行操作
前置通知可以获得切入点(增强方法)信息
后置通知:在目标方法执行之后进行操作
后置通知可以获得切入点(增强方法)的返回信息
环绕通知:在目标方法执行之前和之后进行操作
也能够取出返回值
异常抛出通知:在程序出现异常的时候进行操作
能取出异常消息
最终通知:无论代码是否异常总是会执行
引介通知(了解)
引介增强,则是对类级别的增强,我们可以通过引介增强为目标类添加新的属性和方法,更为诱人的是,这些新属性或方法是可以根据我们业务逻辑需求而动态变化的。
进一步了解请跳转:https://blog.csdn.net/qwe6112071/article/details/50962613
2.4 Spring AOP开发(AspectJ的注解方式)
2.4.1使用注解的AOP对象目标类进行增强
开启注解配置
在切面类中添加注解
编写测试类测试
2.4.2 Spring注解的切入点的配置
Spring中利用切入点的配置来统一管理切面,避免更改时大量修改切面,只需更改切入点的value属性即可。
切入点
切入点管理切面(采用:切入点所处的类.切入点方法)
谢谢阅读! ----知飞翀