我有一个带有private final WebClient webClient
的控制器类。而其余的私有final字段可以使用Lombok提供的@RequiredArgsConstructor进行初始化。Spring Webflux WebClient对象似乎只能像这样初始化:this.webClient = WebClientBuilder.build()
,因此lombok生成的构造函数不起作用
有办法绕过这个吗?
样本代码:
@RequiredArgsConstructor
@Controller
public class SomeController {
private final SomeService someService;
private final SomeConfig someConfig;
private final SomeOtherConfig someOtherConfig;
private final WebClient webClient;
// etc.
}
这不是因为龙目。Spring在应用程序上下文中存在依赖关系时注入依赖关系。只有在使用Spring构造型进行注释或通过@Bean
注释创建实例或是自动配置的一部分时,Spring才会创建实例。Webclient
实例需要存在于要注入的应用程序上下文中。
要注入WebClient
,您可以在配置类中创建如下内容。
@Configuration
public class Config {
@Bean
public WebClient webClient(){
return WebClient.builder().build();
}
}
对我来说,以前的响应不起作用,但它是我响应的基础。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.client.WebClient;
@Configuration
public class WebClientConfiguration {
@Bean
public WebClient webClient(WebClient.Builder webClientBuilder){
return webClientBuilder.build();
}
}