spring aop配置及用例说明(3)
欢迎转载交流:http://www.cnblogs.com/shizhongtao/p/3476336.html
1.这里说一下aop的@Around标签,它提供了在方法开始和结束,都能添加用户业务逻辑的aop方法,@Around标签的方法包含一个 ProceedingJoinPoint 对象作为参数。其实你可以把这个对象理解为一个代理对象。当proceed()方法时候,也就会调用切面对象的方法。可能有点抽象。ProceedingJoinPoint 执行
@Aspect
public class AroundExample { @Around("com.xyz.myapp.SystemArchitecture.businessService()")
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
// 开始执行被加入切面的方法
Object retVal = pjp.proceed();
// retVal就是代理对象(被切面对象)的返回值
return retVal;
} }
上面的代理对象就是指("com.xyz.myapp.SystemArchitecture.businessService()")这个切入点的所有方法。
2.下面在说一下如何获得切入点的参数。
比如我的manager对下有一个sayHello方法,他接受一个String类型的属性。
public void sayHello(String name) {
System.out.println("Hello " + name);
}
如果我们在切入点配置想要得到这个name的值可以这样写:
// 表示在方法前面执行,name表示得到参数,而sayHllo中的"String"限定了只对有一个String类型的sayHello方法起作用
@Before("execution(public * com.bing.test..*.sayHello(String))&&args(name)")
public void before(String name) {
System.out.println(name);
name="@"+name;//这个并不能更改sayHello中的参数值,因为Sting是值传递。如果你想更改的话,可以把原来参数类型改为引用类型
System.out.println(name);
System.out.println("before Method");
}
前面我们说到了@Around标签,这个里面提供了一个代理的对象。如果用这个,就可以把原来的值给替换掉
@Around("execution(public * com.bing.test..*.sayHello(..))&&args(name)")
public Object around(ProceedingJoinPoint pjp,String name) throws Throwable {
System.out.println("around Method");
// start stopwatch
if(name instanceof String){
name="@"+name;
}
Object retVal = pjp.proceed(new Object[]{name});
// stop stopwatch
return retVal;
}
spring aop配置及用例说明(3)的更多相关文章
- spring aop配置及用例说明(2)
欢迎交流转载:http://www.cnblogs.com/shizhongtao/p/3473362.html 这里先介绍下几个annotation的含义, @Before:表示在切入点之前执行. ...
- spring aop配置及用例说明(1)
欢迎转载交流,博客地址http://www.cnblogs.com/shizhongtao/p/3469776.html 首先,什么是aop,其实通俗一点讲就是,再方法执行时候我们加入其它业务逻辑.比 ...
- spring aop配置及用例说明(4)
欢迎交流转载:http://www.cnblogs.com/shizhongtao/p/3476161.html 这里简单对xml的配置方式做一下描述.代码还是上一篇(http://www.cnblo ...
- Spring AOP配置方式
AOP 面向切面编程,允许在 java 应用中的方法调用的前后做一些处理. 本文通过实例介绍两种主要的Spring AOP 配置方式:xml 方式配置,注解方式配置 XML 方式配置 1. 项目包类结 ...
- Java--简单的Spring AOP配置以及AOP事物管理,JDK/GCLib动态代理
一.看一下简单的通过XML的AOP配置 1.首先创建一个简单的Student类 public class Student { private Integer age; private String n ...
- spring aop配置文档部分翻译
欢迎转载交流: http://www.cnblogs.com/shizhongtao/p/3476973.html 下面的文字来自官方文档的翻译,具体事例以后奉上. Advisors "ad ...
- Spring——AOP配置时的jar包异常
首先:这不是SSH整合的,这是单独配置Spring AOP的一个小例子. 所需要的jar包:如图: 我在这里出现的两个问题: 1.没有导入asm的jar包. 所报的异常为: java.lang.Cla ...
- Spring AOP配置简单记录(注解及xml配置方式)
在了解spring aop中的关键字(如:连接点(JoinPoint).切入点(PointCut).切面(Aspact).织入(Weaving).通知(Advice).目标(Target)等)后进行了 ...
- perf4j+spring+aop 配置 注解方式
今天将perf4j基于spring aop方式进入了接入,接入方法还是比较简单.具体配置如下: logback.xml <!--perf4j配置--> <appender name= ...
随机推荐
- yii泛域名
return CMap::mergeArray( require (dirname(__FILE__) . '/main.php'), array( 'components' => array( ...
- .net平台下C#socket通信(转)
上篇.net平台下C#socket通信(上)介绍了socket通信的基本原理及最基本的通信方式.本文在此基础上就socket通信时经常遇到的问题做一个简单总结,都是项目中的一些小问题,拿来此处便于下次 ...
- 分布式文件系统之GPFS
GPFS是IBM公司通过完善和发展其Tiger Shark文件系统发展而来.GPFS通过共享磁盘结构来实现其强大的扩展性.一个GPFS系统由许多集群节点组成,GPFS文件系统和应用程序在上面运行.这些 ...
- MYSQL查询今天昨天本周本月等的数据
mysql查询本季度 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT *FROM表名WHERE TO_DAYS ...
- 如何删除google流氓扩展(强制安装,并且无权限删除)
chrome现在也是流氓遍地跑, 没比IE安全到哪里. TubeAdblocKer 这个流氓扩展,强制安装,无法删除.google了一大堆方法,全部无效.祭出了filelocator这个神器之后,终于 ...
- PHP.5-DIV+CSS布局网站首页实例
DIV+CSS布局网站首页实例 网站页面布局 http://www.sj33.cn/digital/wyll/201501/42379.html[页头.页脚.侧边栏和内容区域] #避免各浏览器对CSS ...
- 5个可以帮你优化App的优秀网站
也许现在有一款App可以提供所有你需要的,你不需要的,或者你可以想象到的内容.但是,有多少App真的可以不仅满足需求而且还能提供很好的用户体验呢? 相信很多APP并没有这样的能力.有一些APP的设计特 ...
- IIS7程序发布后 之 报图表处理程序配置 [c:\TempImageFiles\] 中的临时目录无效
把.net4.0的ASP.NET网站布置在IIS7上,原本开发时一切ok,图形都能够出来,但是一旦部署到iis上,再访问的话, 错误问题:图表处理程序配置 [c:\TempImageFiles\] 中 ...
- a code snip
import java.util.ArrayList; import java.util.HashMap; import java.util.regex.Matcher; import java.ut ...
- hello world from hibernate
初次学习hibernate,第一个程序,用的是XML配置文件 准备工作:下载hibernate的JAR包,我下的是当前最新的4.2.3,SQL的数据库驱动文件SQLJDBC,导入上述架包.