欢迎来到天天文库
浏览记录
ID:34231871
大小:63.62 KB
页数:5页
时间:2019-03-04
《springaop前切入点及多参数问题-不错的理解多参问题!》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、SprinqAOP前切入点及多参数问题博客分类:[AOP1[Sprina]问题:看了很多关于SpringAOP的文章,在讲各种切入方式(before,around,after-returnningsthrown等)时,被切入的业务主体Bean的方法,基本者B是无参数的。也有提到有参数的,但都是一个String型的参数。以before为例,无参数方法的切点配置为Xml代码☆1.如
2、果方法有一个String型的参数param,则配置为Xml代码☆1.注:如果参数其实可为任何类型,即Object。如果非要强调是String型,参数为其他类型的方法,不想被切点切入,则可写成method=”before(java」ang.String)”(经实际测试arg-names=',param"不
3、写也可以)但如果cn.xxxx..*.*的方法有多个参数,且个数不定,要想让切点可以切入,这么个写法就不行了。我搜了N多的帖子,也没能找到方法,最终几经辗转,终于在网友的帮助下,点破了这一层窗户纸,其实也很简单,还是在配置的写法:Xml代码☆1.与z配合的切点的写法是Java代码☆1.publicvoidbefore(JoinPointjp)
4、throwsThrowable{2.…3.}这样,不论业务Bean的方法有多少个参数,都可以被这个切点切入了。如果需要访问各个参数,只需Java代码☆1.Object[]args=jp.getArgs();华丽的分割线其实,能够满足如上需求的方法,至少还有一种,就是拦截器。Mxl代码1.5、ames">3・4.beforelnterceptor5・6.7.8.9.10.11-12.6、13.7、invoke(Methodlnvocationinvocation)throwsThrowable方法)然后再交还给target属性指明的真正的ServiceBean.它不仅仅能够得到方法的参数,而且还有更强的功能——决定是否继续执行target。Java代码1.publicclassMyCheckerimplementsMethodinterceptor{/*♦*用户访问认证方法。*如果登录合法则开始执行服务,否则返回错误。*/publicObjectinvoke(Methodlnvocati8、oninvocation)throwsThrowable{MethodinvokeMethod=invocation.getMethod();Object[]args=invocation.getArguments();%•••){returninvocation.proceed();//检查OK,继续执行}else{returnnull;//检查NG,阻断执行}}看到了吧/这里不仅仅可以得到目标方法的参数Object]]args=invocation.getArguments();还可以,控制
5、ames">3・4.beforelnterceptor5・6.7.8.9.10.11-12.6、13.7、invoke(Methodlnvocationinvocation)throwsThrowable方法)然后再交还给target属性指明的真正的ServiceBean.它不仅仅能够得到方法的参数,而且还有更强的功能——决定是否继续执行target。Java代码1.publicclassMyCheckerimplementsMethodinterceptor{/*♦*用户访问认证方法。*如果登录合法则开始执行服务,否则返回错误。*/publicObjectinvoke(Methodlnvocati8、oninvocation)throwsThrowable{MethodinvokeMethod=invocation.getMethod();Object[]args=invocation.getArguments();%•••){returninvocation.proceed();//检查OK,继续执行}else{returnnull;//检查NG,阻断执行}}看到了吧/这里不仅仅可以得到目标方法的参数Object]]args=invocation.getArguments();还可以,控制
6、13.7、invoke(Methodlnvocationinvocation)throwsThrowable方法)然后再交还给target属性指明的真正的ServiceBean.它不仅仅能够得到方法的参数,而且还有更强的功能——决定是否继续执行target。Java代码1.publicclassMyCheckerimplementsMethodinterceptor{/*♦*用户访问认证方法。*如果登录合法则开始执行服务,否则返回错误。*/publicObjectinvoke(Methodlnvocati8、oninvocation)throwsThrowable{MethodinvokeMethod=invocation.getMethod();Object[]args=invocation.getArguments();%•••){returninvocation.proceed();//检查OK,继续执行}else{returnnull;//检查NG,阻断执行}}看到了吧/这里不仅仅可以得到目标方法的参数Object]]args=invocation.getArguments();还可以,控制
7、invoke(Methodlnvocationinvocation)throwsThrowable方法)然后再交还给target属性指明的真正的ServiceBean.它不仅仅能够得到方法的参数,而且还有更强的功能——决定是否继续执行target。Java代码1.publicclassMyCheckerimplementsMethodinterceptor{/*♦*用户访问认证方法。*如果登录合法则开始执行服务,否则返回错误。*/publicObjectinvoke(Methodlnvocati
8、oninvocation)throwsThrowable{MethodinvokeMethod=invocation.getMethod();Object[]args=invocation.getArguments();%•••){returninvocation.proceed();//检查OK,继续执行}else{returnnull;//检查NG,阻断执行}}看到了吧/这里不仅仅可以得到目标方法的参数Object]]args=invocation.getArguments();还可以,控制
此文档下载收益归作者所有