关闭

Spring-AOP 动态切面

概述 实例概述低版本中,Spring提供了用于创建动态切面的DynamicMethodMatcherPointcutAdvisor抽象类,这个抽象类在2.0已过去,现在可以使用DefaultPointcutAdvisor和DynamicMethodMatcherPointcut来完成相同的功能。DynamicMethodMatcherPointcut是一个抽象类,它将 isRuntime()标识位f...
阅读(128) 评论(0)

Spring-AOP 静态正则表达式方法匹配切面

概述 实例 正则表达式语法 正则表达式工具 RegexBuddy概述在Spring-AOP 静态普通方法名匹配切面案例中 StaticMethodMatcherPointcutAdvisor中,仅能通过方法名定义切点,这种描述方式不够灵活,假设目标类中有多个方法,切满足一定的命名规范,使用正则表达式进行匹配就灵活多了。 RegexpMethodPointcutAdvisor是正则表达式方法匹配的切...
阅读(103) 评论(0)

Spring-AOP 静态普通方法名匹配切面

概述 实例概述StaticMethodMatcherPointcutAdvisor代表一个静态方法匹配切面,它通过StaticMethodMatcherPointcut来定义切点,并通过类过滤和方法名来匹配所定义的切点.实例我们假设我们业务类中 Waiter和 Seller中都有同名的greetTo()方法.业务类Waiterpackage com.xgj.aop.spring.advisor.St...
阅读(93) 评论(0)

Spring-AOP 通过配置文件实现 引介增强

概述 实例概述引介增强是一种比较特殊的增强类型,它不是在目标方法周围织入增强,而是为目标创建新的方法和属性,所以它的连接点是类级别的而非方法级别的。通过引介增强我们可以为目标类添加一个接口的实现即原来目标类未实现某个接口,那么通过引介增强可以为目标类创建实现某接口的代理。 Spring定义了引介增强接口IntroductionInterceptor,该接口没有定义任何方法 Spring为该接口提供...
阅读(245) 评论(0)

Spring-AOP 通过配置文件实现 异常抛出增强

概述 实例概述异常抛出增强表示在目标方法抛出异常后实施增强,最适合的场景是事务管理,比如当参与事事务的方法抛出异常后需要回滚事务。 异常抛出增强类需要实现ThrowsAdvice接口,ThrowsAdvice接口并没有定义任何的方法,它只是一个标志接口。 在运行期,Spring采用反射的机制来进行判断。我们必须采用以下的形式来定义异常抛出的方法 public void afterThrowing(M...
阅读(240) 评论(0)

Spring-AOP 通过配置文件实现 环绕增强

概述 实例概述环绕增强允许在目标类方法调用前后织入横切逻辑,它综合实现了前置,后置增强两者的功能.实例下面是我们用环绕增强同时实现上面的我们的示例。步骤如下: 创建业务接口类:Waiter.java 创建业务实现类:NativeWaiter.java 创建业务增强类:GreetingInterceptor.java 创建配置文件:conf-advice.xml 创建增强测试类:Method...
阅读(227) 评论(0)

Spring-AOP 通过配置文件实现 后置增强

概述 实例概述 后置增强在目标方法调用后执行.实例例如上面的例子中,在服务生每次服务后,也需要向客人问候,可以通过后置增强来实施这一要求,步骤如下:创建业务接口类:Waiter.java 创建业务实现类:NativeWaiter.java 创建业务增强类:GreetingAfterAdvice.java 创建配置文件:conf-advice.xml 创建增强测试类:AfterReturing...
阅读(205) 评论(0)

Spring-AOP 切点/切面类型和创建切面

概述 静态方法匹配器 动态方法匹配器 六种切点类型 静态方法切点StaticMethodMatcherPointcut 动态方法切点DynamicMethodMatcher 注解切点AnnotationMatchingPointcut 表达式切点ExpressionPointcut 流程切点ControlFlowPointcut 复合切点ComposablePointcut 三种切面类型一般切面Ad...
阅读(231) 评论(0)

Spring-AOP 通过配置文件实现 前置增强

概述 在Spring中配置 通过配置文件实现增强 配置文件 ProxyFactory Bean配置文件当中常用的属性 测试类 其他代码概述在上篇博文的案例中 Spring-AOP 创建增强类-前置增强我们使用org.springframework.aop.framework.ProxyFactory通过编码的方式将GreetingBeforeAdvice的增强织入目标类NaiveWaiter中结合我...
阅读(181) 评论(0)

Spring-AOP 增强(Advice)5种类型和创建增强类

概述 增强类型 前置增强 实例一通过代码实现增强 实例二 通过配置文件实现前置增强-ProxyFactory 后置增强 环绕增强 异常抛出增强 引介增强 提示概述Spring使用增强类定义横切逻辑,同时由于Spring只支持方法连接点,增强还包括在方法的哪一点加入横切代码的方位信息,所以增强既包括横切逻辑,又包括部分连接点的信息增强类型AOP联盟为增强定义了org.aopalliance.aop.A...
阅读(90) 评论(0)

Java-CGLib动态代理

导读 问题 CGLib动态代理和JDK动态代理的区别 CGLib概述 改造导读Spring-AOP基础知识Java-JDK动态代理Java-CGLib动态代理问题另一篇博文中的问题性能监视横切逻辑代码CGLib动态代理和JDK动态代理的区别我们知道使用JDK创建代理时只能为接口创建代理实例。我们从Proxy的newProxyInstance方法中可以看出 @CallerSensitive...
阅读(166) 评论(0)

Java-JDK动态代理

问题 概述 改造 其他相关接口类问题另一篇博文中的问题性能监视横切逻辑代码概述Java1.3以后,JAVA提供了动态代理技术,允许开发者在运行期创建接口的代理实例。 JDK的动态代理主要涉及java.lang.reflect包中的两个类:Proxy和InvocationHandler.InvocationHandler是一个接口,可以通过实现该接口定义横切逻辑并通过反射机制调用目标类的代码,动态的将...
阅读(101) 评论(0)

Spring-AOP基础知识

概述 带有横切逻辑的实例 JDK动态代理 CGLib动态代理 代理知识小结概述Spring AOP 使用动态代理技术在运行期织入增强的代码. 为了解密SpringAOP底层的工作机制,我们需要先学习下涉及到的JAVA知识。 Spring使用两种代理机制: 一种是基于JDK的动态代理 另一种是基于CGLib的动态代理。 之所以需要两种代理,是因为JDK本身只能提供接口的代理,而不支持类的代理。 带有...
阅读(181) 评论(0)

Spring-AOP概述

概述 AOP是什么 AOP专业术语 连接点Joinpoint 切点Pointcut 增强Advice 目标对象Target 引介Introduction 织入Weaving 代理Proxy 切面Aspect AOP的实现者 AspectJ AspectWerkz JBoss AOP Spring AOP概述Spring AOP是AOP技术在Spring中的具体实现,它是Spring框架的另外一个重要...
阅读(108) 评论(0)
    个人资料
    • 访问:412577次
    • 积分:8749
    • 等级:
    • 排名:第2187名
    • 原创:356篇
    • 转载:1篇
    • 译文:0篇
    • 评论:41条
    博客专栏