文件下载:
http://files.cnblogs.com/wucg/spring_aop_excise.zip
P:124 spring核心技术
P225: spring doc
可以把Advisor简单理解为一个Advice和一个Pointcut的组合.由于Advisor依赖 Pointcut来判断是否应该将切面织入到目标方法中. 几个重要的Pointcut实现: 1.NameMatchMethodPointcut 对应的类:org.springframework.aop.support.NameMatchMethodPointcutAdvisor 2.AbstractRegexpMethodPointcut : 要求匹配完整的类名和方法名,例如 namespaceName.className.methodName的一个合科条件的正则表达式 为".*methodName" 对应的类: 使用自动代理: 为了向客户端完全屏蔽目标Bean,Spring还提供了自动代理功能 1.自动为多个目标Bean实现AOP代理 2.避免客户端直接访问目标Bean Spring的自动代理功能实际上是由 BeanPostProcessor实现的.在容器载入 XML配置文件后,具有自动代理功能的BeanPostProcessor就可以修改Bean的定义了 将所有需要实现代理的目标Bean全部修改为代理Bean,而id不变. //------------------------------------ Spring提供了几种常见的实现自动代理的BeanPostProcessor. 1.BeanNameAutoProxyCreator:根据Bean的id或name属性来查找目标Bean并自动为 其代理. 2.DefaultAdvisorAutoproxyCreator:根据当前窗口中的Advisor决定每个Bean是否可 以被代理,如果可以,就自动创建代理,并自动织入所有可用的Advisor. 3.AspectJInvocationContextExposingAdvisorAutoProxyCreator:根据AspectJ的语 法规则来决定是否为一个Bean创建代理. 4.AnnotationAwareAspectJAutoProxyCreator:根据AspectJ的注解来决定 Auto Proxy: org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator //---------------------------------------- 引介(Introduction)是一种特殊类型的拦截器,和普通的Interceptor不同,引介不能 作用于任何切入点,引介只能作用于类,而非方法级, 为一个已有的类动态增加接口. //---------------------------------------- Spring支持以下几种主要的AspectJ风格的PointCut. 1. execution:匹配方法执行的切入点,这也是在Spring中最常用的切入点定义方式. 2. within,匹配特定类型的切入点 3. this,匹配特定实例的切入点