
【Spring-AOP进阶】
Spring-AOP进阶
小小工匠
show me the code ,change the world
展开
-
Spring-AOP 使用@AspectJ
概述准备工作实例通过编码的方式使用AspectJ切面通过配置的方式使用AspectJ切面自动生成代理的方式基于Schema的aop命名空间配置的方式概述我们之前一个系列的文章,分别使用Pointcut和Advice接口描述切点和增强,并用Advisor整合二者描述切面,@AspectJ则采用注解来描述切点、增强,二者只是表述方式不同,描述内容的本质是完全相同的。 准备工作在使用@Asp原创 2017-08-24 06:19:32 · 16001 阅读 · 0 评论 -
Spring-AOP @AspectJ进阶之访问连接点信息
概述JoinPointProceedingJoinPoint实例概述AspectJ使用org.aspectj.lang.JoinPoint接口表示目标类连接点对象,如果是环绕增强时,使用org.aspectj.lang.ProceedingJoinPoint表示连接点对象,该类是JoinPoint的子接口。任何一个增强方法都可以通过将第一个入参声明为JoinPoint访问到连接点上下文的信息。原创 2017-09-12 12:06:06 · 16294 阅读 · 0 评论 -
Spring-AOP @AspectJ进阶之绑定连接点方法入参
概述实例概述我们前面的博文在讲解切点函数时说过args()、this()、target()、@args()、@within()、@target()和@annotation()这7个函数除了可以指定类名外,还可以指定参数名将目标对象连接点上的方法入参绑定到增强的方法中。 其中args()用于绑定连接点方法的入参,@annotation()用于绑定连接点方法的注解对象,而@args()用于绑定连接点方原创 2017-09-12 14:10:19 · 17565 阅读 · 0 评论 -
Spring-AOP @AspectJ进阶之绑定代理对象
概述实例概述使用this()或target()可绑定被代理对象实例,在通过类实例名绑定对象时,还依然具有原来连接点匹配的功能,只不过类名是通过增强方法中同名入参的类型间接决定罢了。这里我们通过this()来了解对象绑定的用法:实例代码已托管到Github—> https://github.com/yangshangwei/SpringMaster业务类package com.xgj.aop.spr原创 2017-09-13 01:55:53 · 15517 阅读 · 0 评论 -
Spring-AOP @AspectJ进阶之绑定类注解对象
概述实例概述@within()和@target()函数可以将目标类的注解对象绑定到增强方法中。我们通过@within()演示注解绑定的操作实例代码已托管到Github—> https://github.com/yangshangwei/SpringMaster注解(使用的是自定义注解,也可以使用框架提供的注解)package com.xgj.aop.spring.advisor.aspectJAd原创 2017-09-13 05:00:21 · 13227 阅读 · 3 评论 -
Spring-AOP @AspectJ进阶之绑定连接点方法的返回值
概述实例概述 在后置增强中,可以通过returning绑定连接点方法的返回值实例代码已托管到Github—> https://github.com/yangshangwei/SpringMaster 业务类package com.xgj.aop.spring.advisor.aspectJAdvance.bingReturnValue;import org.springframework.st原创 2017-09-13 05:59:54 · 16607 阅读 · 0 评论 -
Spring-AOP @AspectJ进阶之绑定抛出的异常
概述实例总结概述和通过切点函数绑定连接点信息不同,连接点抛出的异常必须使用AfterThrowing注解的throwing成员进行绑定实例代码已托管到Github—> https://github.com/yangshangwei/SpringMaster业务类package com.xgj.aop.spring.advisor.aspectJAdvance.bindException;impo原创 2017-09-13 08:35:19 · 20645 阅读 · 0 评论 -
Spring-AOP 混合使用各种切面类型及不同切面总结
概述混合使用各种切面类型各种切面类型总结概述通过我们整个AOP系列的学习,我们可以总结出 4种定义切面的方式:基于@AspectJ注解的方式基于<aop:aspect>的方式基于<aop:advisor>的方式基于Advisor类的方式如果项目采用JDK5.0及以上版本,可以优先考虑使用@AspectJ;如果项目只能使用低版本的JDK,则可以考虑使用<aop:aspect>; 如果正在升原创 2017-09-21 10:21:53 · 20952 阅读 · 1 评论 -
Spring4.X系列之AOP-@AspectJ
专栏导读源码专栏欢迎关注 :专栏一 :Spring-AOP基础手札专栏二:Spring-AspectJ手札导读Spring-AOP注解基础Java5.0注解解读Spring-AOP 使用@AspectJSpring-AOP @AspectJ语法基础Spring-AOP @AspectJ切点函数导读Spring-AOP @AspectJ切点函数之@annotation()Spring-AOP @A原创 2017-09-22 10:03:24 · 16299 阅读 · 0 评论 -
Spring-常见问题25问
什么是Spring框架Spring框架有哪些主要模块使用Spring框架能带来哪些好处什么是控制反转IOC什么是依赖注入请解释下Spring框架中的IoCBeanFactory和ApplicationContext有什么区别Spring有几种配置方式如何用基于XML配置的方式配置Spring如何用基于Java配置的方式配置Spring怎样用注解的方式配置Spring请解释Sprin原创 2017-11-13 09:09:48 · 15674 阅读 · 0 评论 -
Spring-AOP @AspectJ进阶之增强织入的顺序
概述示例概述一个连接点可以同时匹配多个切点,切点对应的增强在连接点上的织入顺序到底是如何安排呢?这个问题需要分三种情况讨论: 如果增强在同一个切面类中声明,则依照增强在切面类中定义的顺序进行织入;如果增强位于不同的切面类中,且这些切面类都实现了org.springframework.core.Ordered接口,则由接口方法的顺序号决定(顺序号小的先织入);如果增强位于不同的切面类中,且这些原创 2017-09-11 13:55:02 · 17634 阅读 · 0 评论 -
Spring-AOP @AspectJ进阶之命名切点
概述示例概述在前面所举的例子中,比如@Before("within(com.xgj.aop.spring.advisor.aspectJAdvance.pointcutComplex.*)" + " && execution(* greetTo(..))") public void matchGreetTo() { System.out.printl原创 2017-09-11 01:34:32 · 16127 阅读 · 0 评论 -
Spring-AOP @AspectJ进阶之切点复合运算
概述示例概述@AspectJ可以使用切点函数定义切点,还可以使用逻辑运算符对切点进行复合运算得到复合切点。 为了在切面中重用切点,还可以对切点进行命名,以便在其他地方引用定义过的切点。 当一个连接点匹配多个切点时,需要考虑织入顺序的问题,另外一个重要的问题是如何在增强中访问连接点上下文的信息。 示例代码已托管到Github—> https://github.com/yangshangwei/Sp原创 2017-09-09 14:31:43 · 15791 阅读 · 0 评论 -
Spring-AOP @AspectJ切点函数之@annotation()
annotation概述实例@annotation()概述代码已托管到Github—> https://github.com/yangshangwei/SpringMaster @annotation表示标注了某个注解的所有方法。 下面通过一个实例说明@annotation()的用法。 AnnotationTestAspect定义了一个后置切面增强,该增强将应用到标注了NeedTest的目标方法原创 2017-08-27 13:12:57 · 79549 阅读 · 4 评论 -
Spring-AOP @AspectJ语法基础
概述切点表达式函数方法切点函数executionannotation方法入参切点函数argsargs目标类切点函数withintargetwithintarget代理类切点函数this注意事项在函数入参中使用通配符支持通配符的函数说明逻辑运算符不同增强类型BeforeAfterReturningAroundAfterThrowingAfterDeclar原创 2017-08-25 11:09:08 · 15638 阅读 · 2 评论 -
Spring-AOP @AspectJ切点函数之within()
概述语法实例withincomxgjNaiveWaiterwithincomxgjwithincomxgj概述通过类匹配模式串声明切点,within()函数定义的连接点是针对目标类而言的,而非针对运行期对象的类型而言,这一点和execution()是相同的。 但是within()和execution()函数不同的是,within()所指定的连接点最小范围只能是类,而execution()所原创 2017-09-02 05:35:02 · 24190 阅读 · 1 评论 -
Spring-AOP @AspectJ切点函数之@within()和@target
概述targetM的匹配规则withinM的匹配规则实例targetwithin注意事项概述除了@annotation和@args外,还有另外两个用于注解的切点函数,分别是@target和@within. 和@annotation @args函数一样,@target和@within也只接受注解类名作为入参。 其中@target(M)匹配任意标注了@M的目标类,而@within(M)匹配标原创 2017-09-05 06:12:19 · 73917 阅读 · 13 评论 -
Spring-AOP @AspectJ切点函数导读
概述annotationexecutionargs和argswithinwithin和targettarget和this概述切点函数是AspectJ表达式语言的核心,也是使用@AspectJ进行切面定义的难点,本篇博文将为你揭开@AspectJ切点函数的神秘面纱@annotation()因篇幅原因,请查看另外一篇博文:Spring-AOP @AspectJ切点函数之@annotation原创 2017-08-26 13:50:04 · 15764 阅读 · 0 评论 -
Spring-AOP @AspectJ切点函数之target()和this()
概述实例targetthis概述target()切点函数通过判断目标类是否按类型匹配指定类来决定连接点是否匹配. 用于匹配当前目标对象类型的执行方法;注意是目标对象的类型匹配,这样就不包括引入接口也类型匹配;this()切点函数则通过判断代理类是否按类型匹配指定类来决定是否和切点匹配。 用于匹配当前AOP代理对象类型的执行方法;注意是AOP代理对象的类型匹配,这样就可能包括引入接口也类型原创 2017-09-06 06:24:30 · 24398 阅读 · 3 评论 -
Spring-AOP @AspectJ进阶之绑定代理对象
概述实例概述使用this()或target()可绑定被代理对象实例,在通过类实例名绑定对象时,还依然具有原来连接点匹配的功能,只不过类名是通过增强方法中同名入参的类型间接决定罢了。这里我们通过this()来了解对象绑定的用法:实例代码已托管到Github—> https://github.com/yangshangwei/SpringMaster业务类package com.xgj.aop.spr原创 2017-09-13 23:51:55 · 15201 阅读 · 0 评论 -
Spring-AOP @AspectJ进阶之绑定类注解对象
概述实例概述@within()和@target()函数可以将目标类的注解对象绑定到增强方法中。我们通过@within()演示注解绑定的操作实例代码已托管到Github—> https://github.com/yangshangwei/SpringMaster注解(使用的是自定义注解,也可以使用框架提供的注解)package com.xgj.aop.spring.advisor.aspectJAd原创 2017-09-14 22:09:03 · 15965 阅读 · 0 评论 -
Spring-AOP @AspectJ切点函数之execution()
概述通过execution定义切点的不同方式通过方法签名定义切点通过类定义切点通过类包定义切点通过方法入参定义切点实例通过方法签名定义切点概述execution()是最常用的切点函数,语法如下execution(<修饰符模式>?<返回类型模式><方法名模式>(<参数模式>)<异常模式>?)其中:返回类型模式、方法名模式、参数模式是必选项。 通过execution()定义切点的不同方式下原创 2017-08-28 01:13:52 · 22940 阅读 · 3 评论 -
Spring-AOP @AspectJ切点函数之args()和@args()
概述argsargs实例argsargs概述args函数的入参是类名, 而 @args()的入参必须是注解类的类名。 虽然args()允许在类名后使用“+”通配符,但该通配符在此处没有意义,添加和不添加的效果都一样。args()该函数接收一个类名,表示目标类方法入参对象是指定类(包含子类)时,切点匹配。比如args(com.xgj.Waiter) 表示运行时入参是Waiter类型的方法,它原创 2017-08-31 08:48:21 · 31431 阅读 · 14 评论