欢迎来到天天文库
浏览记录
ID:46580190
大小:205.28 KB
页数:28页
时间:2019-11-25
《spring_AOP实现方法大全》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、AOP实现(一)——Advice关键字:初探aop在Spring1.2或之前的版本中,实现AOP的传统方式就是通过实现Spring的AOPAPI来定义Advice,并设置代理对象。Spring根据Adivce加入到业务流程的时机的不同,提供了四种不同的Advice:BeforeAdvice、AfterAdvice、AroundAdvice、ThrowAdvice。1、BeforeAdvice顾名思义,BeforeAdvice会在目标对象的方法执行之前被调用,您可以通过实现org.springframe
2、work.aop.MethodBeforeAdvice接口来实现BeforeAdvice的逻辑,接口定义如下:java代码1.packageorg.springframework.aop;2.3.publicinterfaceMethodBeforeAdviceextendsBeforeAdvice{4.voidbefore(Methodmethod,Object[]args,Objecttarget)throwsThrowable;5.}其中BeforeAdvice继承自Adivce接口,这两者都是
3、标签接口,并没有定义任何具体的方法。before方法会在目标对象的指定方法执行之前被执行,在before方法种,你可以取得指定方法的Method实例、参数列表和目标对象,在before方法执行完后,目标对象上的方法将会执行,除非在before方法种抛出异常。下面通过例子来说明BeforeAdvice的使用方法。首先定义目标对象所要实现的接口:java代码1.packagecom.savage.aop2.3.publicinterfaceMessageSender{4.voidsend(Stringme
4、ssage);5.}1接着实现MessageSender接口:java代码1.packagecom.savage.aop;2.3.publicclassHttpMessageSenderimplementsMessageSender{4.publicvoidsend(Stringmessage){5.System.out.println("SendMessage["+message+"]byhttp.");6.}7.}OK,我们的业务代码实现完了,现在如果要在不改变我们的业务代码的前提下,在执行业务代
5、码前要记录一些日志,这时就可以通过实现MethodBeforeAdvice接口来实现,如:java代码1.packagecom.savage.aop;2.3.importjava.lang.reflect.Method;4.5.importorg.springframework.aop.framework.MethodBeforeAdvice;6.7.publicclassLogBeforeAdviceimplementsMethodAdvice{8.publicvoidbefore(Methodme
6、thod,Object[]args,Objecttarget)throwsThrowable{9.System.out.println("Logbefore"+method+"byLogBeforeAdvice.");10.}11.}然后再在XML进行如下定义:xml代码1.2.7、/www.w3.org/2001/XMLSchema-instance"4.xsi:schemaLocation="http://www.springframework.org/schema/beans5.http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">6.7.8.9.<8、beanid="logBeforeAdvice"class="com.savage.aop.LogBeforeAdvice">10.11.12.
7、/www.w3.org/2001/XMLSchema-instance"4.xsi:schemaLocation="http://www.springframework.org/schema/beans5.http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">6.7.8.9.<
8、beanid="logBeforeAdvice"class="com.savage.aop.LogBeforeAdvice">10.11.12.
此文档下载收益归作者所有