AOP(Aspect-Oriented Pragram),面向切面编程,是指在运行时将代码切入到指定方法或指定位置的一种编程思路。
在面向对象编程中,会将具有共同特征和行为的事物封装成一个类来表达。现在需要在不同类的方法中加入一个相同功能时,例如方法的执行时间、日志记录、事务控制等,AOP编程思路就能起作用了。如果在每个类中都加入这个功能的代码,不仅造成代码重复性,而且违背了单一职责原则。所以aop编程弥补了oop在横向上编程的问题。
用于切入方法中的代码,通常会提取到统一的类中,这个类称之切面。
代码切入到指定方法的动作叫做通知,根据切入的不同方式可以划分出前置,后置,环绕等通知。
通知切入到哪些方法中,由切入点决定,通过execution或者within指定切入规则。
通知切入的方法等信息,叫做连接点。在程序代码中,可以通过连接点获取切入方法名、对象等信息。
通知切入的方法所属对象叫做目标对象;运行时,根据通知和目标对象的方法合并生成一个新的对象,叫做代理对象。
将代码切入到目标对象,然后生成相应的代理对象的过程叫做织入。
Java中,AOP实现是通过JDK或者CGLIB动态代理技术生成代理对象完成的,