错误信息如下:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field helloAgent in com.example.client.controller.Hello required a bean of
type 'com.example.common.agent.HelloAgent' that could not be found.
Action:
Consider defining a bean of type 'com.example.common.agent.HelloAgent' in
your configuration.
项目结构:
模块:测试客户端作为假客户端调用方。
模块:测试服务器作为 feignclient 接口实现。
模块:测试通用将所有 feignClient 放在一起。
测试常见:
package com.example.common.agent;
@FeignClient("hello")
public interface HelloAgent {
@GetMapping("/hello")
String hello(@RequestParam String msg);
}
测试服务器:(工作正常(
package com.example.server.controller;
@RestController
public class Hello implements HelloAgent {
@Override
public String hello(@RequestParam String msg) {
System.out.println("get " + msg);
return "Hi " + msg;
}
}
测试客户端:
package com.example.client.controller;
@RestController
public class Hello {
@Autowired
private HelloAgent helloAgent;
@GetMapping("/test")
public String test() {
System.out.println("go");
String ret = helloAgent.hello("client");
System.out.println("back " + ret);
return ret;
}
}
----------------------------
@EnableEurekaClient
@EnableFeignClients
@SpringBootApplication
@ComponentScan(basePackages = {"com.example.common.agent","com.example.client.controller"})
public class TestClientApplication {
public static void main(String[] args) {
SpringApplication.run(TestClientApplication.class, args);
}
}
有没有办法把所有的假客户端放在一起,以便我们可以优雅地管理它们?
还是只有办法使用它们的冗余?
谢谢!
Feign不知道@ComponentScan
.
使用@EnableFeignClients(basePackages = {"com.example.common.agent","com.example.client.controller"})
使用配置的解决方案
- 如果您使用 Swagger Codegen,您可以使用配置来引导 API:
@Configuration
public class ParkingPlusFeignClientConfiguration {
@Autowired
private ParkingPlusProperties properties;
@Bean
public ServicoPagamentoTicket2Api ticketApi() {
ApiClient client = new ApiClient();
// https://stackoverflow.com/questions/42751269/feign-logging-not-working/59651045#59651045
client.getFeignBuilder().logLevel(properties.getClientLogLevel());
client.setBasePath(properties.getHost());
// Generated from swagger: https://demonstracao.parkingplus.com.br/servicos
return client.buildClient(ServicoPagamentoTicket2Api.class);
}
}