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