欢迎来到“雪碧聊技术”CSDN博客!
在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目心得。
让我们一同在Java的广阔天地中遨游,携手提升技术能力,共创美好未来!感谢您的关注与支持,期待在“雪碧聊技术”与您共同成长!
一、AOP概述
1、AOP介绍
AOP:Aspect Oriented Programming(面向切面编程),其实就是面向特定方法编程。
AOP的底层,是基于动态代理技术实现的。
2、使用场景
我们要统计,我们项目中,所有的service实现类中的,业务方法的执行时间。
- 不使用AOP切面编程的场景
此时我们需要手动的,在每一个业务方法内,添加统计执行耗时的代码(获取方法运行开始时间、获取方法运行结束时间、最后二者相减,得出运行耗时),此时代码非常繁琐、冗余,不优雅。
- 使用AOP切面编程的场景
如图:使用AOP切面编程后,我们不需要改动各个业务方法的代码,而是编写一个AOP切面类,就能实现和上面一样的效果。
3、AOP的实现原理:动态代理
动态代理是面向切面编程最主流的实现。而SpringAOP是Spring框架的高级技术,旨在管理bean对象的过程中,主要通过底层的动态代理机制,对特定的方法进行编程。
二、AOP快速入门
在不改动service层的代码前提下,统计每一个serviceImpl的执行耗时
1、导入依赖
2、编写AOP代码
3、发送请求,被请求到的业务方法,会在控制台输出耗时
三、拓展
1、其他使用场景
以上就是AOP切面编程的牛刀小试。
AOP切面编程还能应用于:
- 记录日志操作
- 权限控制
- 事务管理
举例:我们之前学到的事务管理,即:@Transactional注解,底层就是使用的AOP切面编程。逻辑是:在执行添加该注解的方法前,会开启事务;执行完毕后,会提交/回滚事务。
2、AOP切面编程的优点
- 代码无侵入:并没有修改业务方法的原有代码,就实现了原有功能的增强/改变。
- 减少重复代码
- 提高开发效率
- 维护方便:后期共性的代码需要改变,我们只需要修改对应的AOP类即可。
3、总结
①AOP是什么?
AOP:面向切面编程,即面向特定方法编程(仅仅是一种思想)。
可以在不改动原始方法的基础上,针对原始方法进行编程(功能的增强/改变)。
②SpringAOP是什么?
SpringAOP:基于动态代理技术,实现AOP思想。
AOP面向切面编程仅仅是一种思想,而动态代理技术是面向切面编程的最主流实现方式。
而SpringAOP底层就是基于动态代理技术,针对特定的方法进行编程。
③SpringAOP开发步骤
- 导入AOP依赖
- 编写AOP代码,针对特定的方法进行编程。
四、AOP核心概念
1、AOP核心概念
2、AOP执行流程
AOP底层用到了动态代理,生成目标对象的代理对象,对其做一个增强:增强逻辑就是通知的内容(即:上图的绿色部分(拓展内容)+橙色部分(原始方法))。
结语
以上就是AOP的基本内容,了解更多的AOP内容,请关注本博主的文章——“SSM框架之AOP进阶”。