Как создать аспект в классе, который не является компонентом, использующим Spring AOP? - PullRequest
5 голосов
/ 18 марта 2010

Я работаю над устаревшим приложением, в котором используется Spring AOP (а именно ProxyFactoryBean).

Мне нужно добавить аспект вокруг метода определенного класса. Однако этот класс не . Выражение AspecjJ pointcut будет выглядеть так: execution(* xyz.package.Class.method())

Я создал MethodInterceptor и AspectJExpressionPointcut, но я не знаю, как заставить этих двоих работать вместе.

EDIT
У меня нет исходного кода для этого класса, это сторонняя библиотека. Экземпляры этого класса не созданы мной ни в исходном коде, ни в весенней конфигурации как бины. Он используется внутри библиотеки.

Любая помощь приветствуется.

Ответы [ 2 ]

3 голосов
/ 18 марта 2010

Вы можете использовать ткачество во время загрузки с полной поддержкой AspectJ, как описано здесь , оно не требует доступа к источнику рекомендованных классов или контроля над их реализацией (хотя для этого требуется <context:load-time-weaver /> наличие самого ткача с использованием -javaagent:... или других методов ).

3 голосов
/ 18 марта 2010

Попробуйте @Configurable. Это объясняется в этой документации .

Аннотация @Configurable помечает класс как подходящий для конфигурации с использованием Spring

(вам нужно <context:load-time-weaver />)

Обновление Вы можете сделать сторонний компонент компонентом, перечислив его в applicationContext.xml как <bean class=".." /> (вам не нужно @Configurable с этим)

...