Кто-нибудь знает, почему следующий AOP/AspectJ не работает в примерах 2,3?
Примечание. Пример 1 работает.
Моя цель — перехватить запуск Hibernate Query's executeUpdate()
, который встречается во всем приложении. Hibernate Query — это интерфейс, и я вижу в коде, что класс реализации, который я возвращаю, — это QueryImpl. Так что это класс, на который я хочу ориентироваться, хотя я пробовал и общие фильтры.
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?