为了账号安全,请及时绑定邮箱和手机立即绑定

Spring:如何将@RestClientTest 与带有@Qualifier

Spring:如何将@RestClientTest 与带有@Qualifier

萧十郎 2022-10-07 17:32:00
我已经更改了一个使用 a 的 Spring Boot (2.1.4) 服务RestTemplate来使用@Qualifier. 现在我的 Test (with @RestClientTestand @AutoConfigureWebClient) 失败了,因为它无法解析 bean。我该如何解决?配置:  @Bean  @Qualifier("eureka")  @LoadBalanced  RestTemplate eurekaRestTemplate() {服务:  public ClarkClient(      @Qualifier("eureka") RestTemplate restTemplate, ClarkConfiguration configuration)      throws URISyntaxException {考试:@ExtendWith({SpringExtension.class, MockitoExtension.class})@RestClientTest({CastorClient.class, CastorConfiguration.class})@AutoConfigureWebClient(registerRestTemplate = true)class CastorClientWebTest {  @Autowired  private CastorClient cut;  @Autowired  private MockRestServiceServer server;错误:[2019-04-16T14:02:22,614] [WARN ] [            ....AnnotationConfigApplicationContext] [refresh 557] : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'castorClient' defined in file [/home/martinsc/java/routing/route-testing-batch-manager/out/production/classes/com/tyntec/routetesting/batchmanager/core/clients/CastorClient.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.web.client.RestTemplate' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=eureka)}
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

您不应该使用(registerRestTemplate = true)它,因为它会为您创建一个不是您使用的 RestTemplate bean。

如果在您的 中声明了您的合格 RestTemplate bean,请CastorConfiguration尝试使用@Import(CastorConfiguration.class)


查看完整回答
反对 回复 2022-10-07
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

对我有用的解决方案:(@AutoConfigureWebClient没有(registerRestTemplate = true))。在@TestConfiguration类中创建一个RestTemplate具有权限的 bean@Qualifier


@Bean

@Qualifier("eureka")

public RestTemplate eurekaRestTemplate() {

  return new RestTemplate();

}

将其注入测试类


@Autowired

@Qualifier("eureka")

private RestTemplate restTemplate;

现在我们需要将它连接到MockRestServiceServer. 我们通过@BeforeEach


private MockRestServiceServer server;

@BeforeEach

  void setUp () {

    server = MockRestServiceServer.bindTo(restTemplate).build();

  }


查看完整回答
反对 回复 2022-10-07
  • 2 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号