在没有 spring 的情况下在 aop.xml 中组合 AOP 切入点

发布于 2024-12-09 16:43:38 字数 523 浏览 0 评论 0原文

以下是我试图创建的方面。我想将两个切入点表达式合并为一个。我已经看到可以使用带注释的切入点来完成此操作,但 xml 中的相同语法会失败。谁能帮助我吗?

<aspects>
  <concrete-aspect name="com.logger.aspect.InjectionLoggerImpl" 
                   extends="com.logger.aspect.InjectionLogger">
    <pointcut name="loggingInterceptor" 
              expression="execution(* com.*..*.next(..)) || execution(* com.*..*.read(..))"/>
    <pointcut name="methExecInterceptor="some expression"/>
  </concrete-aspect>
</aspects>

提前致谢

Below is the aspect I am trying to create. I would like to combine two pointcut expressions into one. I have seen that this can be done using annotated pointcuts but the same syntax in the xml fails. can anyone help me?

<aspects>
  <concrete-aspect name="com.logger.aspect.InjectionLoggerImpl" 
                   extends="com.logger.aspect.InjectionLogger">
    <pointcut name="loggingInterceptor" 
              expression="execution(* com.*..*.next(..)) || execution(* com.*..*.read(..))"/>
    <pointcut name="methExecInterceptor="some expression"/>
  </concrete-aspect>
</aspects>

Thanks in advance

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

山川志 2024-12-16 16:43:38

在 xml 中使用 Spring 2.0.x 是不可能的:

XML 风格比 @AspectJ 风格在表达内容方面受到更多限制:仅支持“单例”切面实例化模型,并且无法组合 XML 中声明的命名切入点

切入点springsource.org/spring/docs/2.0.x/reference/aop.html" rel="nofollow">6.4.2。 @AspectJ 或 Spring AOP 的 XML

然而,在 Spring 3.0.x 中这是可能的:

组合切入点子表达式时,“&&”在 XML 文档中很尴尬,因此可以使用关键字“and”、“or”和“not”来代替“&&”、“||”和 '!'分别。例如,前面的切入点可能更好地写为:

<aop:config>
   <aop:aspect id="myAspect" ref="aBean">

    <aop:pointcut id="businessService" 
      expression="execution(* com.xyz.myapp.service.*.*(..)) and this(service)"/>
    <aop:before pointcut-ref="businessService" method="monitor"/>
   ...

    </aop:aspect>
</aop:config>

It's not possible with Spring 2.0.x in xml:

XML style is more limited in what in can express than the @AspectJ style: only the "singleton" aspect instantiation model is supported, and it is not possible to combine named pointcuts declared in XML

6.4.2. @AspectJ or XML for Spring AOP

It is however possible in Spring 3.0.x:

When combining pointcut sub-expressions, '&&' is awkward within an XML document, and so the keywords 'and', 'or' and 'not' can be used in place of '&&', '||' and '!' respectively. For example, the previous pointcut may be better written as:

<aop:config>
   <aop:aspect id="myAspect" ref="aBean">

    <aop:pointcut id="businessService" 
      expression="execution(* com.xyz.myapp.service.*.*(..)) and this(service)"/>
    <aop:before pointcut-ref="businessService" method="monitor"/>
   ...

    </aop:aspect>
</aop:config>

Spring 3 aop

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文