Как я могу регистрировать частные методы через 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 на основе прокси. Это представляет собой другой режим использования АОП с другими характеристиками, поэтому обязательно ознакомьтесь с ткачеством, прежде чем принимать решение.

Другие вопросы по тегам