Я пытаюсь реализовать АОП в своем проекте, в котором несколько клиентов коннектора API добавлен как пом зависимости. Зависимости не могут быть изменены, поэтому я пытаюсь добавить логику АОП в родительский проект.
Пример. Проект А
<dependencies>
<!------ other dependencies ------->
<dependency>
<groupId>x.y</groupId>
<artifactId>api-client-b</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>p.q</groupId>
<artifactId>api-client-c</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
Код AOP хорошо работает при применении к классам проекта A, но когда я пытаюсь добавить его в какой-то класс внутри, скажем, api-client-b или api-client-c, он не работает. Может ли кто-нибудь помочь мне понять, что я делаю не так, а также предложить обходной путь?
Пожалуйста, обрати внимание: Я не могу изменить api-client-b и api-client-c
Вам нужно будет обернуть эти клиентские классы B и C. Вы не можете ожидать, что они узнают о Spring Boot или ваших аспектах.
И это должно работать, потому что? Зарегистрированы ли эти классы как beans и используются как beans или они созданы с помощью new? Действительно ли ваш аспект соответствует этим классам (выражениям pointcut). В общем, слишком мало информации, чтобы помочь.




Если у вас нет исходного кода аспекта или применения АОП к файлам классов или файлам JAR, тогда вы можете выполнить переплетение времени после компиляции или переплетение времени загрузки.
Концепция очень хорошо объяснена в этой статье.
если вы не можете изменить api-client-b и api-client-c, как вы предполагаете изменить их поведение?