发表于: 2017-08-12 23:26:32

1 953


今天完成的事情:
昨天整理的AOP的两种配置,和两种动态代理的实现原理,但是没有讲一些理论性的东西。

方面(Aspect):

一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用spring的 Advisor或拦截器实现。

连接点(Joinpoint):程序执行过程中明确的点,如方法的调用或特定的异常被抛出。

通知(Advice): 

在特定的连接点,AOP框架执行的动作。各种类型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多AOP框架包括Spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器链。

Spring中定义了四个advice: BeforeAdvice, AfterAdvice, ThrowAdvice和DynamicIntroductionAdvice

切入点(Pointcut): 指定一个通知将被引发的一系列连接点的集合。AOP框架必须允许开发者指定切入点:例如,使用正则表达式。 Spring定义了Pointcut接口,用来组合MethodMatcher和ClassFilter,可以通过名字很清楚的理解, MethodMatcher是用来检查目标类的方法是否可以被应用此通知,而ClassFilter是用来检查Pointcut是否应该应用到目标类上
引入(Introduction): 添加方法或字段到被通知的类。 Spring允许引入新的接口到任何被通知的对象。例如,你可以使用一个引入使任何对象实现 IsModified接口,来简化缓存。Spring中要使用Introduction, 可有通过DelegatingIntroductionInterceptor来实现通知,通过DefaultIntroductionAdvisor来配置Advice和代理类要实现的接口

目标对象(Target Object): 

包含连接点的对象。也被称作被通知或被代理对象。POJO

AOP代理(AOP Proxy): 

AOP框架创建的对象,包含通知。 在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理(这就是昨天用代码实现的两种动态代理)。

织入(Weaving): 组装方面来创建一个被通知对象。这可以在编译时完成(例如使用AspectJ编译器),也可以在运行时完成。Spring和其他纯Java AOP框架一样,在运行时完成织入。


明天计划的事情:

整理一些数据结构的知识点和一些简单的排序算法。


遇到的问题:

由于今天志勇师兄回武汉,请了半天假,跟志勇师兄出去转了一圈,做的事情有点少,明天再补上吧。


总结:
之前面试没有被问到AOP,但是我看到很多博客上面都有提到面试必问AOP,这应该是一个非常重要的知识点,需要自己去弄明白,所以花了一天半的事情去学习这个知识点,不单单是为了应付面试,以后代码中也会经常用到,这个AOP的核心思想就是将应用的业务逻辑和对其提供支持的通用服务进行隔离。







返回列表 返回列表
评论

    分享到