Перехватчик создания бина - PullRequest
0 голосов
/ 22 ноября 2018

Дайте понять, что в приложении существует несколько 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?

1 Ответ

0 голосов
/ 22 ноября 2018

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

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

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

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

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

...