AOP/AspectJ 未按标准执行的问题

Problem with AOP/AspectJ not executing on criterion

有谁知道为什么以下 AOP/AspectJ 在示例 2,3 中不起作用?

注意:示例 1 有效

我的目标是拦截 Hibernate 的触发 Query's executeUpdate(), which occurs throughout the application. Hibernate Query is an interface, and I see in the code that the implementing class I get back is QueryImpl。这就是我想要定位的 class,尽管我也尝试过通用过滤器。

XML

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

       <!-- EXAMPLE 1: SIMPLE TEST: WORKS OK. 
            I intercept all methods in all my custom classes in "dao" package. -->
        <aop:pointcut id="test1" expression="execution(* myapp.dao.*.*(..))" /> 
        <aop:before pointcut-ref="test1" method="doTest1" /> 

       <!-- EXAMPLE 2: DOESN'T WORK.
            Target everything in Hibernate's Impl package with executeUpdate() function -->         
        <aop:pointcut id="executeUpdate2" expression="execution(* org.hibernate.impl..*..executeUpdate(..))" />
        <aop:before pointcut-ref="executeUpdate2" method="handleExecuteUpdate" /> 

        <!-- EXAMPLE 3: DOESN'T WORK.
            Target QueryImpl specifically -->   
        <aop:pointcut id="executeUpdate3" expression="execution(* org.hibernate.impl.QueryImpl.executeUpdate(..))" /> 
        <aop:before pointcut-ref="executeUpdate3" method="handleExecuteUpdate" /> 

    </aop:aspect>
</aop:config>
<bean id="aspectBean" class="myapp.util.AOPAspect">
</bean>

我知道 Hibernate 层次结构是正确的。示例 #1 效果很好,所以我知道 AOP/AspectJ 连接正确。有没有不支持AOP/AspectJ的外部库遍历?

我发现它不起作用,因为我正在处理外部 JAR(在本例中为 Hibernate)。示例 1 有效,因为我在自己的代码中。

外部 JAR 切入点没有简单的解决方案,只有加载时编织是可能的(但我还没有尝试过),

Aspectj: intercept method from external jar