Кажется, что у меня не работает AOP с настройкой Reactive.
Я написал аспект, который должен отлавливать результат реактивной функции и отправлять его дальше. И когда я внезапно запускаю тесты, у меня появляется ошибка Монго, которой у меня никогда не было:
org.springframework.dao.DuplicateKeyException: E11000 duplicate key error collection
Вот мой аспект. Он только делает некоторые проверки и отправляет результат. Не касаясь БД.
@Retention(AnnotationRetention.RUNTIME)
annotation class SpecialAnnotation
@Aspect
@Component
class MyAspect(val sender: MySender) {
@AfterReturning(pointcut = "@annotation(SpecialAnnotation)", returning = "result")
fun send(joinPoint: JoinPoint, result: Any) {
(result as Mono<MyResult>)
.map { sender.send(result) }
.subscribe()
}
}
Вот как я это называю:
@Component
class MyJoinPoint {
@SpecialAnnotation
fun getResult(): Mono<Result> {....}
}
Проблема устранена, если аннотация аспекта или подписка удалены. Конечно, это не тот результат, которого я ожидал.
Должен ли я использовать для этого специальную AOP-реактивную версию? Есть ли альтернатива? В чем может быть проблема с ошибкой БД?