返回介绍

4.4 在XML中声明切面

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

在本书前面的内容中,我曾经建立过这样一种原则,那就是基于注解的配置要优于基于Java的配置,基于Java的配置要优于基于XML的配置。但是,如果你需要声明切面,但是又不能为通知类添加注解的时候,那么就必须转向XML配置了。

在Spring的aop命名空间中,提供了多个元素用来在XML中声明切面,如表4.3所示。

表4.3 Spring的AOP配置元素能够以非侵入性的方式声明切面

AOP配置元素

用  途

<aop:advisor>

定义AOP通知器

<aop:after>

定义AOP后置通知(不管被通知的方法是否执行成功)

<aop:after-returning>

定义AOP返回通知

<aop:after-throwing>

定义AOP异常通知

<aop:around>

定义AOP环绕通知

<aop:aspect>

定义一个切面

<aop:aspectj-autoproxy>

启用@AspectJ注解驱动的切面

<aop:before>

定义一个AOP前置通知

<aop:config>

顶层的AOP配置元素。大多数的<aop:*>元素必须包含在<aop:config>元素内

<aop:declare-parents>

以透明的方式为被通知的对象引入额外的接口

<aop:pointcut>

定义一个切点

我们已经看过了<aop:aspectj-autoproxy>元素,它能够自动代理AspectJ注解的通知类。aop命名空间的其他元素能够让我们直接在Spring配置中声明切面,而不需要使用注解。

例如,我们重新看一下Audience类,这一次我们将它所有的AspectJ注解全部移除掉:

正如你所看到的,Audience类并没有任何特别之处,它就是有几个方法的简单Java类。我们可以像其他类一样把它注册为Spring应用上下文中的bean。

尽管看起来并没有什么差别,但Audience已经具备了成为AOP通知的所有条件。我们再稍微帮助它一把,它就能够成为预期的通知了。

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

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

发布评论

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