1. AOP:面向切面编程
2. 实现原理:动态代理
3. 配置方式:
<1> @AspectJ
<2> XML
推荐<2>,原因:可实现"热插拔".
4. 相关术语介绍
<1> 切面:aspect
需要实现的交叉功能----通知和切入点的结合。
通知和切入点共同定义了关于前面的全部功能:它的功能、在何时和何地完成功能。
<2> 通知: advice
定义了切面是什么以及何时使用。
描述的内容:切面需要完成的工作、何时执行该工作----应该在一个方法被调用之前、之后或者抛出异常时。
<3> 切入点 pointcut
如果说通知定义了切面的"什么"和"何时",那么切入点就定义的"何地"。
<4> 连接点 joinpoint
应用程序执行过程中能够插入切面的地点。
地点:方法被调用时、异常抛出时、字段被编辑时等等。
<5> 引入 intrduction
允许为已经存在的类添加新方法和属性。
比如:一个通之类,记录对象在最后一次被修改时的状态,只需要一个setLastModified(Date date)方法,和一个实例变量来保存这个状态。这个新方法和实例变量就可以被引入到现有的类,从而在不修改它们的情况下,让它们具有新的行为和状态。
<6> 目标对象 target
被通知的对象。
<7> 代理 proxy
将通知应用到目标后创建的对象。
<8> 织入
将切面应用到目标对象从而创建一个新的代理对象的过程。在目标对象的生命周期里有多个机会发生织入过程。比如编译时、类加载时、运行时。
5. Spring AOP的5个时间点