Spring中的AOP(Aspect Oriented Programming,面向切面编程)是一个很重要的技术,作为使用Spring的程序员,对了解和使用时及其重要的!
引入
就拿我一天的行程做例子。
这就是我也是每个人要经历的一天,现在需要这样一个功能,我想知道我每天都是在哪个时间点去做哪件事(系统里的日志功能)。
这里要是不使用AOP机制的话,我就要自己主动的去记录,如:我起床要记录一下时间,中午吃饭要记录一次时间,晚上睡觉要记录一次时间,显然这对于我是不现实的,我是三天打渔两天晒网,决不能达到每次都能之准确的记载!这个时候有了AOP,我就不需要操这个心了,我早起,吃饭,睡觉的前后,都会将记录这件事托管给AOP,我可以安安心心的快快乐乐的度过一天了。
在web系统里也是这样,我想对一些很重要的操作,比如操作数据库,或者操作某张表,我都不需要再花任何操作去主动的记录操作者和操作时间,而是将这一记录功能过托管给AOP,这样在主要的业务逻辑中,我就不会多写一行代码。
术语
名称 | 作用 |
---|---|
通知(Advice) | 通知定义了切面是什么几何时使用 |
连接点(Join point) | 应用里可能有数以千计的时机应用通知。这些时机被称为连接点 |
切点(Pointcut) | 如果说通知定义了切面的“何时”“什么”的话,那么切点就定义了“何处” |
切面(Aspect) | 切面是通知和切点的结合:它是什么,在何时和何处完成其功能 |
引入(Introduction) | 引入允许我们向现有的类添加新方法或属性 |
织入(Weaving) | 织入是把切面应用到目标对象并创建心得代理对象的过程 |
通知方法
下面就是我们关心的几个注解的解释
注解 | 通知 |
---|---|
@After | 通知方法在目标方法返回或抛出异常后调用 |
@AfterReturning | 通知方法会在目标方法返回后调用 |
@AfterThrowing | 通知方法会在目标方法抛出异常后调用 |
@Before | 通知方法在目标方法调用之前执行 |
@Around | 通知方法会在目标方法封装起来(可代替前四个注解) |
以上就是aop的简单介绍,下面两篇是aop功能和aop处理参数功能的实现介绍