【问题标题】:mixing spring AOP and aspectj compiler?混合spring AOP和aspectj编译器?
【发布时间】:2011-11-29 01:01:45
【问题描述】:

我有一个基于 spring 的现有项目。

我想捕捉对 HibernateTemplate.save() 的调用,因此我在 exec(save()) 上定义了一个切入点,并将时间记录在一个环绕建议中。

我可以使用 spring AOP 定义方面,但我可以看到 spring AOP 仅在切入点中的对象是 bean 时才有效,但在我的情况下,HibernateTemplate 可以直接在现有客户端中的 new() 中创建代码。

所以我必须通过 maven 插件使用 aspectj 编译器。我想知道混合 spring AOP 和 aspectj 是否有任何潜在的冲突? ---- 这个项目以前的开发者可能已经在某处使用过 Spring AOP

谢谢 杨

【问题讨论】:

    标签: spring aop aspectj


    【解决方案1】:

    我的所有 Spring 应用程序通常使用 AspectJ 而不是 Spring-Proxy-AOP。为此,您需要设置一些弹簧配置,主要设置类似mode="AspectJ" 的内容。一旦我对某些配置忘记了这一点,这意味着应用程序将 AspectJ 用于某些方面,而将 Spring-Proxy-AOP 用于其他方面,是的,应用程序工作正常(除了我真的需要 AspectJ 而不是 pring-Proxy- AOP)。

    所以在我看来:如果你有足够的测试用例,那就试试吧。

    【讨论】:

      【解决方案2】:

      这样就可以了。我已经做过很多次了。我总是从 Spring AOP 开始,因为它很简单,只有在我需要一些 Spring AOP 不提供的功能时才开始使用 AspectJ。

      我唯一的建议是尽可能使用@AspectJ 样式,这样您就可以通过细微的配置更改轻松更改。

      如果您不熟悉注释样式,可以在 Espen Berntsen 的博客 @AspectJ cheat sheet 上找到有关它的更多信息

      【讨论】:

        猜你喜欢
        • 2015-12-17
        • 1970-01-01
        • 2010-12-09
        • 1970-01-01
        • 1970-01-01
        • 2012-07-25
        • 2012-03-28
        • 2015-01-20
        • 2013-03-18
        相关资源
        最近更新 更多