没有合适的资源?快使用搜索试试~ 我知道了~
首页Spring AOP实现方法大全
在Spring1.2或之前的版本中,实现AOP的传统方式就是通过实现Spring的AOP API来定义Advice,并设置代理对象。Spring根据Adivce加入到业务流程的时机的不同,提供了四种不同的Advice:Before Advice、After Advice、Around Advice、Throw Advice。 1、Before Advice 顾名思义,Before Advice会在目标对象的方法执行之前被调用,您可以通过实现org.springframework.aop.MethodBeforeAdvice接口来实现Before Advice的逻辑,接口定义如下: java 代码 1. package org.springframework.aop; 2. 3. public interface MethodBeforeAdvice extends BeforeAdvice { 4. void before(Method method, Object[] args, Object target) throws Throwable; 5. } 其中BeforeAdvice继承自Adivce接口,这两者都是标签接口,并没有定义任何具体的方法。before方法会在目标对象的指定方法执行之前 被执行,在before方法种,你可以取得指定方法的Method实例、参数列表和目标对象,在before方法执行完后,目标对象上的方法将会执行,除 非在before方法种抛出异常。 下面通过例子来说明Before Advice的使用方法。首先定义目标对象所要实现的接口: java 代码
资源详情
资源评论
资源推荐
AOP
实现(一)—— Advice
关键字: 初探 aop
在 或之前的版本中,实现 的传统方式就是通过实现 的
来定义 ,并设置代理对象。 根据 加入到业务流程的时机
的不同,提供了四种不同的 :、、
、。
、
顾名思义, 会在目标对象的方法执行之前被调用,您可以通过实现
接口来实现 的逻辑,接
口定义如下:
代码
!
" #$%&
' ((#)*# +,*# -#$!
. /
其中 继承自 接口,这两者都是标签接口,并没有定义任何具
体的方法。# 方法会在目标对象的指定方法执行之前被执行,在 # 方法种,
你可以取得指定方法的 实例、参数列表和目标对象,在 # 方法执行完
后,目标对象上的方法将会执行,除非在 # 方法种抛出异常。
下面通过例子来说明 的使用方法。首先定义目标对象所要实现的接
口:
代码
" #$&
' (()-!
. /
接着实现 接口:
代码
!
" #$$0$&
' #$)-&
. 1$)2+2332,#12-!
4 /
5 /
6,我们的业务代码实现完了,现在如果要在不改变我们的业务代码的前提下,
在执行业务代码前要记录一些日志,这时就可以通过实现 接
口来实现,如:
代码
!
" $$!
'
. !
4
5 #$$7$&
8 ((#$#)*# +,*# -
#$&
9 (((((1$)27#2332#172-!
: ((/
/
然后再在 ;7 进行如下定义:
%$代码
(
<=%$(>2:2(>2?@A82=B((((
<#(%$>2CDDDD#2((((
" %$C%>2CDD"D::D;7A2((((
' %C7>2CDDDD#((((
. CDDDD#DA#A:%2B((((
4 ((
5 ((((<#(>2$2($>202B
<D#B((((
8 ((((((
9 ((((<#(>2$2($>272B<D
#B((((
: ((((((
((((<#(>22($>2%1
@12B((((
((((((((<1(>2%12($>22
DB((((
" ((((((((<1(>22(>2$2DB((((
' ((((((((<1(>2E2B((((
. ((((((((((((<$B((((
4 ((((((((((((((((<$B$<D$B((((
5 ((((((((((((<D$B((((
8 ((((((((<D1B((((
9 ((((<D#B((((
: <D#B(((
这样我们就为 对象指定了 对象。在这里,我们分别定
义了一个 对象($)和一个 对象
($),并定义了一个
%1@1 对象
(),@1 或 $F% 将使用 %1@1 来
建立代理对象,在这里就是 $ 建立代理对象。在
%1@1 的定义中,%1 属性指定了要代理的接口; 指定
了要建立代理的目标对象;E 则指定了应用与指定接口上的
对象列表, 将根据列表中定义的顺序在执行目标对象的方法前、后执行
中定义的方法。
现在我们写一个程序来验证下:
代码
!
" %$F%!
' %F$;$$!
.
4 #$$G&
5 ((#$)+,-&
8 ((((($F%%>F$;$$F%)2#A%$2-!
9 (((((>)-%)22-!
: ((((()22-!
(/
/
执行结果:
Log before public abstract void com.savage.simplespring.bean.MessageSender.send(java.lang.String) by
LogBeforeAdvice.
Send Message[message] by http.
正如你所看到的,在执行 的 方法前先执行了 7 的方法!在这个例子中,记
录日志的代码并没有横切到我们的业务代码中,7 和 0 彼此不知道对方的存在,
而且我们的应用程序 G 对 7 的存在也是一无所知。假如有一天我们的应用程序不需
要再业务代码执行前记录日志了,只需要修改 ;7 文件中的定义,而不用更改 G 的代码:
代码
、
会在目标对象的方法执行完后执行,你可以通过实现 H
接口来实现 的逻辑,H 接口定义如下:
代码
!
" #$%#$&
剩余14页未读,继续阅读
SZleoWang
- 粉丝: 116
- 资源: 188
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 2023年中国辣条食品行业创新及消费需求洞察报告.pptx
- 2023年半导体行业20强品牌.pptx
- 2023年全球电力行业评论.pptx
- 2023年全球网络安全现状-劳动力资源和网络运营的全球发展新态势.pptx
- 毕业设计-基于单片机的液体密度检测系统设计.doc
- 家用清扫机器人设计.doc
- 基于VB+数据库SQL的教师信息管理系统设计与实现 计算机专业设计范文模板参考资料.pdf
- 官塘驿林场林防火(资源监管)“空天地人”四位一体监测系统方案.doc
- 基于专利语义表征的技术预见方法及其应用.docx
- 浅谈电子商务的现状及发展趋势学习总结.doc
- 基于单片机的智能仓库温湿度控制系统 (2).pdf
- 基于SSM框架知识产权管理系统 (2).pdf
- 9年终工作总结新年计划PPT模板.pptx
- Hytera海能达CH04L01 说明书.pdf
- 数据中心运维操作标准及流程.pdf
- 报告模板 -成本分析与报告培训之三.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1