如何在Spring Boot中基于配置动态创建RestClient Bean?
动态生成Spring Boot RestClient Bean的需求与问题
配置示例
我的application.yaml中有如下RestClient配置:
restClient: clients: client1: connection-timeout: PT10s response-timeout: PT10s user-agent: test client2: connection-timeout: PT10s response-timeout: PT10s user-agent: test2
核心需求
我希望根据上述配置动态生成对应的RestClient Bean,并且这些Bean能像在@Configuration类中手动定义的一样,直接被注入使用。
已尝试方案的问题
我曾实现BeanDefinitionRegistryPostProcessor来编写自定义FactoryPostProcessor,通过RestClient.builder()创建DefaultRestClientBuilder生成Bean。这种方式虽然能生成Bean,但会丢失Spring Boot在RestClientAutoConfiguration类中完成的所有自动配置能力——包括已配置的指标、bundle相关功能都无法复用。
期望方案
我想要实现一种混合方案:既能利用FactoryPostProcessor实现动态Bean生成,又能通过条件注解获取Spring Boot自动配置好的RestClient.Builder,从而保留所有原生自动配置的能力。
更新说明
补充:该功能会作为一个库的核心部分,属于自动配置范畴。同时希望尽可能简化集成流程,避免使用该动态Bean的服务需要额外添加@Conditional注解来阻塞实例化,直到动态Bean绑定完成。
内容的提问来源于stack exchange,提问作者Piritz
相关产品推荐
相关产品推荐

