用AOP的概念来代替掉上一篇的约定内容的概念
瞧,解决了那些生涩的概念了吧,嘿嘿,AOP也就是那么回事,它搞了一些,你看得不明不白的概念,忽悠你一下而已。
为了更加明确,我们介绍一下AOP的术语:
连接点(JointPoint):就是你具体需要拦截的方法,比如上一篇的类HelloServiceImpl的sayHello方法就是一个连接点。
切面(Aspect):就是你需要织入的各类通知所组成,在动态代理里,你可以认为它是一个拦截器,它还可以定义后面介绍的切点,还有通知等内容,你可以认为大部分需要织入流程的东西和配置都可以在切面配置。
通知(Advice):分为前置(before),后置(after),环绕(around),异常返回通知(afterThrowing),正常返回通知(afterReturning),它们将依据约定织入对应的流程中。
织入(Weave):生成动态代理对象,将各类通知织入流程的过程。Spring采用动态代理技术,织入流程,当默认的情况下,存在接口的,使用JDK动态代理,否则使用CGLIB动态代理织入。
为了更好的理解这些,笔者给出Spring AOP约定的流程图:
这就是Spring AOP和我们约定的流程。
当然这里还有两个概念,一个叫做切点一个叫做引入,我们还没有解释,这篇还会解释切点,等待有机会我们再解释引入吧,不过有了上表的描述,AOP的概念就简单多了,当然Spring实现AOP,比博主模拟的要复杂得多,不过道理是一样的,就是给约定,然后把你开发的代码织入到AOP约定的流程中。