Как я могу регистрировать частные методы через Spring AOP?
Я не могу войти в приватные методы, используя Spring Aop. Ниже приведена конфигурация, которую я использую ниже конфигурации
<aop:config proxy-target-class="true">
<aop:pointcut id="allServiceMethods" expression="execution(* com.mycom.app.abc..*.*(..))"/>
<aop:advisor pointcut-ref="allServiceMethods" advice-ref="performanceMonitor" order="2"/>
</aop:config>
у меня есть cglib
баночка на моем пути к классу.
1 ответ
Вы должны использовать ткачество времени компиляции вместо использования прокси для Spring AOP.
Из Spring AOP - Поддерживаемые указатели Pointcut
Из-за основанной на прокси природе инфраструктуры AOP Spring защищенные методы по определению не перехватываются ни для прокси-серверов JDK (если это не применимо), ни для прокси-серверов CGLIB (где это технически возможно, но не рекомендуется для целей AOP). Как следствие, любой данный pointcut будет сопоставляться только с публичными методами!
Если ваши потребности в перехвате включают защищенные / приватные методы или даже конструкторы, рассмотрите возможность использования собственного AspectJ-ткачества, основанного на Spring, вместо AOP-среды Spring на основе прокси. Это представляет собой другой режим использования АОП с другими характеристиками, поэтому обязательно ознакомьтесь с ткачеством, прежде чем принимать решение.