使用Feign,在服务消费者中,调用服务提供者的接口。
此处使用 Nacos,详情见: https://www.cnblogs.com/expiator/p/17392549.html
1.8
UTF-8
UTF-8
2.6.13
2021.0.5
2021.0.5.0
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter
org.springframework.cloud
spring-cloud-starter-bootstrap
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
${spring-cloud-alibaba.version}
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
${spring-cloud-alibaba.version}
org.springframework.cloud
spring-cloud-loadbalancer
org.springframework.cloud
spring-cloud-starter-openfeign
#配置文件优先级(由高到低):
#bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml
# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
server.port=8083
spring.application.name=provider
spring.profiles.active=dev
# 设置配置中心服务端地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.prefix=provider
spring.cloud.nacos.config.file-extension=yaml
# Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,请不要填写这个值,直接留空即可
spring.cloud.nacos.discovery.namespace=
# Nacos 服务发现与注册配置。
# 其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
@RestController
public class ProviderController {
/**
* 后面的 :abc 表示默认值为 abc。
*/
@Value("${config.name:abc}")
private String configName;
@GetMapping(value = "/provider/test")
public String test() {
return "Hello World~";
}
@GetMapping(value = "/provider/config")
public String getConfig() {
return configName;
}
}
#配置文件优先级(由高到低):
#bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml
server.port=8084
spring.application.name=consumer
spring.profiles.active=dev
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.prefix=consumer
spring.cloud.nacos.config.file-extension=yaml
# Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,请不要填写这个值,直接留空即可
spring.cloud.nacos.discovery.namespace=
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
使用注解@EnableFeignClients启用feign客户端
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Resource
private FeignDemoService feignDemoService;
@GetMapping("/test")
public String customer() {
return feignDemoService.test();
}
}
@FeignClient(value = "provider")
public interface FeignDemoService {
@GetMapping("/provider/test")
String test();
}
启动服务提供者,以及服务消费者,通过 feign 做一次服务调用。

A component required a bean of type '' that could not be found.
解决方法:
在Application启动类上方,添加注解 @EnableFeignClients
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?
解决方法:
org.springframework.cloud
spring-cloud-loadbalancer
https://github.com/enjoyCoding666/iSpringCloud/