返回介绍

4.4.3 为通知传递参数

发布于 2024-08-17 00:45:50 字数 988 浏览 0 评论 0 收藏 0

在4.3.3小节中,我们使用@AspectJ注解创建了一个切面,这个切面能够记录CompactDisc上每个磁道播放的次数。现在,我们使用XML来配置切面,那就看一下如何完成这一相同的任务。

首先,我们要移除掉TrackCounter上所有的@AspectJ注解。

程序清单4.13 无注解的TrackCounter

去掉@AspectJ注解后,TrackCounter显得有些单薄了。现在,除非显式调用countTrack()方法,否则TrackCounter不会记录磁道播放的数量。但是,借助一点Spring XML配置,我们能够让TrackCounter重新变为切面。

如下的程序清单展现了完整的Spring配置,在这个配置中声明了TrackCounter bean和BlankDisc bean,并将TrackCounter转化为切面。

程序清单4.14 在XML中将TrackCounter配置为参数化的切面

可以看到,我们使用了和前面相同的aop命名空间XML元素,它们会将POJO声明为切面。唯一明显的差别在于切点表达式中包含了一个参数,这个参数会传递到通知方法中。如果你将这个表达式与程序清单4.6中的表达式进行对比会发现它们几乎是相同的。唯一的差别在于这里使用and关键字而不是“&&”(因为在XML中,“&”符号会被解析为实体的开始)。

我们通过练习已经使用Spring的aop命名空间声明了几个基本的切面,那么现在让我们看一下如何使用aop命名空间声明引入切面。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文