2012年2月27日
摘要: 原创内容,转载请注明出处【http://sishuok.com/forum/blogPost/list/0/2474.html】 如果我们有多个通知想要在同一连接点执行,那执行顺序如何确定呢?Spring AOP使用AspectJ的优先级规则来确定通知执行顺序。总共有两种情况:同一切面中通知执行顺序、不同切面中的通知执行顺序。 首先让我们看下1)同一切面中通知执行顺序:如图6-6所示。图6-6 同一切面中的通知执行顺序而如果在同一切面中定义两个相同类型通知(如同是前置通知或环绕通知(proceed之前))并在同一连接点执行时,其执行顺序是未知的,如果确实需要指定执行顺序需要将通知重构到两个.. 阅读全文
posted @ 2012-02-27 07:32 kaitao1987 阅读(1205) 评论(0) 推荐(4) 编辑
  2012年2月26日
摘要: 包括使用JoinPoint获取 参数自动获取流程 私塾在线原创 sishuok.com 阅读全文
posted @ 2012-02-26 21:04 kaitao1987 阅读(1001) 评论(0) 推荐(4) 编辑
摘要: 私塾在线原创内容, http://sishuok.com6.5.1 Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方法执行的连接点; within:用于匹配指定类型内的方法执行; this:用于匹配当前AOP代理对象类型的执行方法;注意是AOP代理对象的类型匹配,这样就可能包括引入接口也类型匹配; target:用于匹配当前目标对象类型的执行方法;注意是目标对象的类型匹配,这样就不包... 阅读全文
posted @ 2012-02-26 08:01 kaitao1987 阅读(974) 评论(0) 推荐(2) 编辑
  2012年2月25日
摘要: 原创内容,同步发布到私塾在线 sishuok.comSpring除了支持Schema方式配置AOP,还支持注解方式:使用@AspectJ风格的切面声明。6.4.1 启用对@AspectJ的支持 Spring默认不支持@AspectJ风格的切面声明,为了支持需要使用如下配置:java代码:<aop:aspectj-autoproxy/>这样Spring就能发现@AspectJ风格的切面并且将切面应用到目标对象。6.4.2 声明切面 @AspectJ风格的声明切面非常简单,使用@Aspect注解进行声明:java代码:@Aspect()Public class Aspect{……} 然 阅读全文
posted @ 2012-02-25 12:12 kaitao1987 阅读(1619) 评论(0) 推荐(2) 编辑
摘要: 6.3 基于Schema的AOP 基于Schema的AOP从Spring2.0之后通过“aop”命名空间来定义切面、切入点及声明通知。 在Spring配置文件中,所以AOP相关定义必须放在<aop:config>标签下,该标签下可以有<aop:pointcut>、<aop:advisor>、<aop:aspect>标签,配置顺序不可变。<aop:pointcut>:用来定义切入点,该切入点可以重用;<aop:advisor>:用来定义只有一个通知和一个切入点的切面;<aop:aspect>:用来定义切面,该切面 阅读全文
posted @ 2012-02-25 08:28 kaitao1987 阅读(955) 评论(1) 推荐(2) 编辑
  2012年2月24日
摘要: 6.2.1 准备环境 首先准备开发需要的jar包,请到spring-framework-3.0.5.RELEASE-dependencies.zip和spring-framework-3.0.5.RELEASE-with-docs中查找如下jar包:org.springframework.aop-3.0.5.RELEASE.jarcom.springsource.org.aspectj.weaver-1.6.8.RELEASE.jarcom.springsource.org.aopalliance-1.0.0.jarcom.springsource.net.sf.cglib-2.2.0.jar 阅读全文
posted @ 2012-02-24 13:21 kaitao1987 阅读(321) 评论(0) 推荐(1) 编辑
摘要: 6.1.1 AOP是什么 考虑这样一个问题:需要对系统中的某些业务做日志记录,比如支付系统中的支付业务需要记录支付相关日志,对于支付系统可能相当复杂,比如可能有自己的支付系统,也可能引入第三方支付平台,面对这样的支付系统该如何解决呢?传统解决方案: 1)日志部分提前公共类LogUtils,定义“longPayBegin”方法用于记录支付开始日志,“logPayEnd”用于记录支付结果: 2)支付部分,定义IPayService接口并定义支付方法“pay”,并定义了两个实现:“PointPayService”表示积分支付,“RMBPayService”表示人民币支付;并且在每个... 阅读全文
posted @ 2012-02-24 08:53 kaitao1987 阅读(233) 评论(0) 推荐(2) 编辑
摘要: 5.1概述5.1.1 概述 Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”,类似于Struts2x中使用的OGNL表达式语言,能在运行时构建复杂表达式、存取对象图属性、对象方法调用等等,并且能与Spring功能完美整合,如能用来配置Bean定义。 表达式语言给静态Java语言增加了动态功能。 SpEL是单独模块,只依赖于core模块,不依赖于其他模块,可以单独使用。5.1.2 能干什么 表达式语言一般是用最简单的形式完成最主要的工作,减少我们的工作量。 SpEL支持如下表达式:一、基本表达式:字面量表达式、关系,逻辑与算数运算表达式、字 阅读全文
posted @ 2012-02-24 08:28 kaitao1987 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 5.3 SpEL语法5.3.1 基本表达式一、字面量表达式:SpEL支持的字面量包括:字符串、数字类型(int、long、float、double)、布尔类型、null类型。类型示例字符串String str1 = parser.parseExpression("'Hello World!'").getValue(String.class);String str2 = parser.parseExpression("\"Hello World!\"").getValue(String.class);数字类型int in 阅读全文
posted @ 2012-02-24 08:28 kaitao1987 阅读(258) 评论(0) 推荐(1) 编辑
摘要: 5.4.1 xml风格的配置 SpEL支持在Bean定义时注入,默认使用“#{SpEL表达式}”表示,其中“#root”根对象默认可以认为是ApplicationContext,只有ApplicationContext实现默认支持SpEL,获取根对象属性其实是获取容器中的Bean。 首先看下配置方式(chapter5/el1.xml)吧:java代码:查看复制到剪贴板打印<beanid="world"class="java.lang.String"><constructor-argvalue="#{'World! 阅读全文
posted @ 2012-02-24 08:28 kaitao1987 阅读(175) 评论(0) 推荐(1) 编辑