提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
以下内容纯属作者个人见解,写的不好,还请见谅。 未经作者授权,禁止转载
1.什么是AOP?
aop又称面向切面编程,是由是施乐公司帕洛阿尔托研究中心(Xerox PARC)在上世纪90年代发明的一种编程范式。也就是说它并不是一段特定的代码,或者某个包,它更多的是一种思想, 简单点来说就是如果你想吃有鸡蛋的三明治,那么你需要将鸡蛋放入三明治当中,那么在这个过程中,三明治就是一个切面。而鸡蛋可以比作你想要扩展的代码。
2.AOP的好处
学过三层架构的朋友都知道,如果我们此时需要去加一些比如日志啊,事务这些扩展功能时。我们只能去原有的代码里面修改,完全违背了开闭原则,而aop的存在则完美的解决了这个问题,这就是aop的好处之一,非侵入式。并且aop让原本零散的代码分散到了一个个的类中去,大大的降低了代码结构的复杂度。并且在分散代码的同时,也增加了代码的重复性,降低了耦合度。使得开发人员能够动态地将代码切入到类的指定方法。
3.AOP专业术语
切入点(Pointcut):通俗来讲就是指明所需连接点的程序构造,即你要切入的方法
@pointcut 关键字表明是一个命名的切入点声明,
pointcut() 是切入点的名字 execution(public *
"execution(* Service.UserService.*(…))"捕获所需要的连接点。
@Pointcut("execution(* Service.UserService.*(..))")
public void pointcut(){}
连接点(Join Point)与切入点匹配的执行点。
切面(Aspect)说白了就是一个类,是通知和切入点的结合。
目标对象(Target object) 你要扩展功能的类
AOP代理(AOP proxy) aop的底层实现原理
织入(Weaving)实现aop的过程
通知(Advice)通知指定当到达特定切入点处应该执行的方法
总结
AOP技术使得需要编写的代码量大大缩减,节省了时间,控制了开发成本。同时也使得开发人员可以集中关注于系统的核心商业逻辑。此外,它更利于创建松散耦合、可复用与可扩展的大型软件系统。