什么是AOP?
AOP面向切面编程,是基于动态代理的。AOP就是动态代理的规范化,把动态代理的实习按步骤和方式都定义好了,让开发人员用一种统一的方式使用动态代理。
Aspect Orient Programming:面向切面编程
Aspect:切面。给目标类增加的功能就是切面。添加的日志信息和事务都是切面。
切面的最大特点就是:非业务方法,和我们的业务功能没有关系,可以独立使用的。
怎么理解面向切面编程:
(1)需要在分析项目时,找出切面。
(2)合理的安排切面的执行时间(是在目标方法前执行,还是在目标方法后执行)。
(3)合理的安排切面执行的位置(在哪个类,哪个方法增加增强功能)。
术语:
(1)Aspect:切面,表示要给业务方法增强的功能,就是一堆代码,这堆代码完成某一个功能。切面是非业务功能(日志,事务,统计信息,参数检查,权限验证)
(2)JoinPoint:连接点,连接业务方法和切面的位置,就是某个类中的业务方法。
(3)PointCut:切入点,指多个连接点方法的结合。是多个方法,这些方法都要加入切面的功能。
(4)目标对象:要给哪个类增加方法
(5)Advice:通知,表示切面功能的执行时间(切面在什么时候执行,是在方法之前还是在方法之后)
一个切面有3个关键的要素:
(1)切面的功能代码:切面要干什么
(2)切面的执行位置,使用pointcut表示
(3)切面的执行时间:在目标方法之前还是在目标方法之后,用advice表示
AOP的实现:是一个规范,是对动态代理的一个规范化。
AOP的技术实现框架:
1.Spring:Spring实现了AOP规范,主要在事务处理时使用了AOP。项目开发中很少使用Spring的AOP实现。
2.aspectJ:一个开源的专门做AOP的框架。Spring框架中集成了aspectJ框架,通过Spring就能使用aspectJ框架的功能了。aspectJ框架实现AOP有两种方式:
(1)使用xml配置文件
(2)使用注解(我们在项目中要做AOP功能,一般都使用注解),aspectJ有5个注解。
学习aspectJ框架的使用:
(1)切面的执行时间,也就是advice通知。在aspectJ框架中是使用注解来表示的。
(1.1&#