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

时间:2011-10-13 15:37:47

标签: java spring aop

以下是我想要创建的方面。我想将两个切入点表达式合并为一个。我已经看到这可以使用带注释的切入点完成,但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>

提前致谢

1 个答案:

答案 0 :(得分:1)

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

  

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

6.4.2. @AspectJ or XML for Spring AOP

然而,在Spring 3.0.x中可以这样做:

  

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

<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