摘要:
一 . 概述 对一个切入点来说,我们是可以织入大量的通知进行增强的. 这里就出现了一个拦截器链的问题,还有一个问题就是执行顺序的问题. 二 .拦截器链 当出现一个连接点的大量通知的问题时,spring使用的是拦截器链来进行解决, 这和我们一般认为的拦截器链的运行方式时一致,但是我们在使用注解的时候并 阅读全文
摘要:
一 . 概述 在前面的一节中,我们介绍了切入点表达式的书写方式. 但是一个通知后面需要加上一个切入点表达式,这样就会造成我们需要重复书写大量的切入点表达式. 因此,重用切入点表达式的需求就出现了. spring为我们提供这一实现. 二 .简单的例子 在上面,我们定义了一个方法,上面含有一个注解@Po 阅读全文
摘要:
一 .概述 在上一节之中,我们看到了使用AspectJ处理AOP变得十分简单了. 其核心有两点是需要我们重点注意的: (1)切入点表达式 (2)通知增强的注解 本节,重点说一下切入点表达式的问题. 二 .切入点表达式 切入点表达式重点表示的就是通知到底应该在上面方法上面生效. 因此,切入点表达式的核 阅读全文
摘要:
一 . 概述 在之前我们了解了spring生成代理对象的过程,但是整个过程的配置是十分麻烦的. 尽管spring提供了很多的解决方法,但是还是无法从根本上解决配置复杂的问题. 如,name匹配等方式(这里不去说). 而,作为业界最优秀的AOP框架,Aspectj的实现却相当的简单,因此spring引 阅读全文
摘要:
一 . 概述 在前一节之中,我们使用ProxyFactory创建了代理对象,后面也提到,spring支持配置式的方式创建代理对象. 配置的关键就是ProxyFactoryBean. 二 .ProxyFactoryBean的结构 我们看到这个类实现了FactoryBean接口,那么我们就知道这个实现类 阅读全文
摘要:
一. 概述 之前我们介绍了AOP的实现依赖于动态代理,再深一点说,就是创建出一个代理对象才能完成AOP的实现. 因此,我们就能知道了,AOP的核心首要就是创建出动态代理对象. 二 . 前置说明 AOP在spring之中的表现形式是相当多的,如之前的IOC形式,Aspectj的风格,各种xml的形式, 阅读全文
摘要:
一 . 概述 我们知道AOP底层使用的就是动态代理,在JDK中支持接口级别的动态代理, 这里我们进行一下演示,目的是方面后面看源代码时变得简单一些. 二 . 核心接口 上面的接口就是动态代理的核心接口,我们可以理解为一个方法级别的拦截. 其中的参数,proxy表述代理对象,method表示被拦截的方 阅读全文
摘要:
一 . 概述 AOP给人的感觉很强大,但是很难用.原因就是大多数人只是会配置一下,而不知道是怎么实现的, 对于一个自己都没有把握的技能,自然在应用的过程中不会首先选择. 自己也是一样,本次就自己家整理一下AOP部分的知识,比较系统和底层的的梳理一下. 二 .AOP 老生常谈的面想想切面编程,其实质就 阅读全文
摘要:
一 . 概述 在这里我们不去说事件机制的好处还有一个基础概念性的问题,我们专注于spring的容器事件的问题. 使用事件机制,我们可以完成异步的方法调用,另外使用线程的机制,我们还可以获得并发的好处. 二 .容器事件的开始 我们看一下spring源码之中是如何发布容器事件的. 在refresh()方 阅读全文
摘要:
一 . 概述 在之前我们说过@Conditional注解可以帮助我们实现条件的Bean的注册,但有时候却不是很方便. 如我们在生产和测试环境是不同的,因此我们需要一个能够根据环境注入Bean的方式. @Profile注解就能帮助我们实现这个功能. 二 . 测试 配置类: 我们在test环境下会注入一 阅读全文