Перехватчик создания бобов

Допустим, в приложении есть несколько классов org.springframework.web.reactive.function.client.WebClient, которые созданы таким образом:

@Bean
@Qualifier("one")
public WebClient one() {
    return WebClient.builder().baseUrl("someUrl").build();
}
@Bean
@Qualifier("two")
public WebClient two() {
    return WebClient.builder().baseUrl("someUrl").build();
}
//etc.

Необходимо добавить фильтры для всех созданных WebClient. Что-то такое:

public WebClient intercepter(WebClient webClient) {
    return webClient.mutate().filter(setupFilter());
}

Возможно ли это с пружиной 5?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
38
1

Ответы 1

Я полагаю, у вас нет прав на изменение предоставленного кода bean-компонентов?

В этом случае вы можете реализовать BeanPostProcessor - обнаруживать реализации WebClient (или методы по типу возвращаемого значения) и возвращать обновленное значение в каждом методе.

В качестве альтернативы вы можете заменить реальную реализацию WebClient декоратором в вашем постпроцессоре.

Вот пример о том, как реализовать процессор. В этом случае операции блокировки внедряются в оригинальные методы.

Не забудьте включить ваш постпроцессор в контекст

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