В настоящее время я работаю над приложением, которое должно быть интегрировано в любое веб-приложение на основе Spring, чтобы позволить пользователю определять динамические точечные ссылки, изменяя значение аннотации @Pointcut во время выполнения , Моя основная цель - переключить метод, с которым соткается определенный аспект, пока приложение все еще работает.Изменение выражений pointcut во время выполнения с использованием Spring AOP
До сих пор я работал над запуском контекста приложения Spring, определяющего класс аспект из основного метода и изменяющего значение аннотации через Reflection. Однако мне показалось, что это изменение не повлияло на прокси-объект, созданный Spring. Аспект все еще был сплетен и вызывается в соответствии с исходным значением @Pointcut до того, как были применены мои изменения. Идея попробовать это подошла ко мне, потому что согласно «Весна в действии» и документации Spring эти прокси-объекты создаются во время выполнения. Поэтому я пришел к выводу, что должен быть способ обеспечить изменения времени выполнения.
Кто-нибудь знает, есть ли другой способ, кроме моего подхода, чтобы получить эту работу, используя Spring AOP? Я с нетерпением жду ваших идей и мнений!
EDIT: Важно, чтобы мое решение оставило существующий код незатронутым, если это возможно. Поэтому добавление или замена методов в beans - это не вариант для меня.
Спасибо за ваш ответ Yazad! Предлагая добавить или заменить метод, я думаю, вы думаете об изменении, например. сервисный компонент? Для моего решения важно изменить существующие компоненты. Извините, я должен был упомянуть об этом. Знаете ли вы, что ваше решение также работает с прокси-серверами, созданными Spring? – pklndnst
Вы не обязательно меняете компонент - вы изменяете конфигурацию для построения компонента. –
К сожалению, для этого проекта я не могу изменить конфигурацию Spring. Поэтому я ищу решение, которое полностью не затрагивает целевые компоненты и их конфигурацию. Я могу манипулировать только своим классом аспектов ... – pklndnst