- Aop面向切面编程,在Spring中,通过配置切面类和切点,切面类中主要有前置通知方法,后置通知方法,异常通知方法以及环绕通知方法,切面类中的方法的逻辑就是你要织入代码的逻辑,然后你需要判断哪些类需要进行前面切面,所以就要配置切入点,可以使用xml方式,也可以使用注解的方法。
- 实现方式主要是通过动态代理给目标类生成代理对象,如果目标类实现了接口就使用jdk代理,如果没有实现接口使用cglib代理,如果配置了优先级,则默认使用cglib代理。在spring容器启动后,就会去扫描哪些需要进行aop的类,这些类有哪些切面(切面是可以配置多个的),然后给目标类的每个方法都绑定一个相应的执行链,并放入到一个map中,当你调用时,会走代理类,然后通过索引加递归的方式去调用切面类前置通知方法,目标类方法,后置通知方法这样的顺序去调用。
- 使用:可以拦截目标类,在方法的前后织入日志打印逻辑,包括Spring事务开启也是使用的aop,还有动态数据源切换等场景都是可以使用aop。如果配置多个切面,则要指定执行顺序,通过设置sort的大小来指定,sort值越小,越先执行,越后结束,sort值越大,越后执行,越先结束,就相当于一个同心圆。事务sort值默认是int类型的最大值。
相关文章
- 12-24Spring IoC和AOP的实现原理解析(整理版)
- 12-24Spring IoC中各个注解的理解和使用
- 12-24AOP的理解和使用
- 12-24面试常见问题-Spring Aop的理解和使用?
- 12-24spring aop 中@annotation()和自定义注解的使用
- 12-24Spring中使用动态代理和AOP来实现事务的管理
- 12-24简单直白的去理解AOP,了解Spring AOP,使用 @AspectJ - 读书笔记
- 12-24spring AOP的概念和使用
- 12-24《【面试突击】— Redis篇》--Redis Cluster及缓存使用和架构设计的常见问题
- 12-24面试官:什么是AOP?Spring AOP和AspectJ的区别是什么?