`

Spring2.0切面定义

 
阅读更多

切入点用来匹配在哪些连接点(Spring AOP中只是方法执行)上执行通知(请参考Spring AOP方面的资料)。

切入点定义格式如下:

 

 execution (modifiers-pattern? ret-type declaring-type? name-pattern (param-pattern) throws-pattern?)

其中方法返回值(ret-type)和方法名(name-pattern),参数(param-pattern)必选,其他为可选。

 

返回类型常用*,表示任意返回类型;也可用*匹配名字模式,表示任意名字的方法;

参数匹配方式有几种方式:

1.()匹配一个不接受参数的方法;

2.(..)匹配一个接受任意多个参数的方法(0个或多个);

3.(*)匹配一个接受一个任意类型参数的方法;

4.(*,String)匹配一个接受一个任意类型参数和一个String类型参数的方法;

 

 

以下是一些切入点表达式例子(记录于Spring官方文档)

 

一、任意公共方法的执行

execution (public * *(..))

 

二、任何一个名字以“set”开头的方法执行

execution (* set*(..))

 

三、AccountService接口定义的任意方法的执行

execution (* com.rote.AccountService.*(..))

 

四、在service包中定义的任意方法的执行

execution (* com.rote.service.*.*(..))

 

五、在service包及其子包中定义的任意方法的执行

execution (* com.rote.service..*.*(..))

 

六、在service包中的任意连接点(Spring AOP中只是指方法执行)

within (com.rote.service.*)

 

七、在service包中及其子包中定义的任意连接点(Spring AOP中只是指方法执行)

within (com.rote.service..*)

 

八、实现了AccountService接口的代理对象的任意连接点(Spring AOP中只是指方法执行)

this (com.rote.AccountService)

 

九、实现了AccountService接口的目标对象的任意连接点(Spring AOP中只是指方法执行)

target (com.rote.AccountService)

 

十、任何一个只接受一个参数,且运行时所需传入的参数是Serializable接口的连接点(Spring AOP中只是指方法执行)

args (java.io.Serializable)

 

第十点中的定义和execution (* *(java.io.Serializable)) 不同;args只有在动态运行时传入参数是Serializable时匹配,execution在方法签名中声明只有一个Serializable类型的参数时匹配

 

 

分享到:
评论

相关推荐

    Spring 2.0 开发参考手册

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 ...

    spring chm文档

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点...

    Spring in Action(第2版)中文版

    6.4.3在spring2.0里声明事务 6.4.4定义注释驱动事务 6.5小结 第7章保护spring 7.1springsecurity介绍 7.2验证用户身份 7.2.1配置providermanager 7.2.2根据数据库验证身份 7.2.3根据ldap仓库进行身份验证 ...

    Spring in Action(第二版 中文高清版).part2

    4.3.1 为Spring切面创建自动代理 4.3.2 自动代理@AspectJ切面 4.4 定义纯粹的POJO切面 4.5 注入AspectJ切面 4.6 小结 第二部分 企业Spring 第5章 使用数据库 5.1 Spring的数据访问哲学 5.1.1 了解Spring数据...

    Spring in Action(第二版 中文高清版).part1

    4.3.1 为Spring切面创建自动代理 4.3.2 自动代理@AspectJ切面 4.4 定义纯粹的POJO切面 4.5 注入AspectJ切面 4.6 小结 第二部分 企业Spring 第5章 使用数据库 5.1 Spring的数据访问哲学 5.1.1 了解Spring数据...

    Spring API

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 ...

    Spring中文帮助文档

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 ...

    JAVA程序开发大全---上半部分

    10.3.2 面向切面编程中的主要概念 166 10.4 使用MyEclipse实现Spring框架中的IoC编程 166 10.4.1 创建Spring项目 166 10.4.2 创建Bean类 167 10.4.3 配置Bean类 168 10.4.4 编写测试代码 171 10.5 使用MyEclipse实现...

    java面试题

    73.6. 项目中用到的Spring中的切面编程最多的地方:声明式事务管理。 77 73.7. spring的事务如何配置 77 73.8. transaction有那几种实现(事务处理)(Spring) 79 73.9. Spring IoC 79 73.10. Spring AOP面向方面编程 ...

Global site tag (gtag.js) - Google Analytics