记个笔记
今天进行SpringCloud的学习,然后由于之前的配置导致两个服务不在同个组,导致报错,以下是集成步骤
- 消费者导入openfeign的包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
- 启动类开启feign服务
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class,args);
}
}
- 消费者创建Feign接口
@FeignClient(name = "provider")
public interface ProviderFeign {
@GetMapping("hello")
public String sayHello();
}
- 引用生产类方法
@RestController
@Slf4j
public class ConsumerController {
@Autowired
private DiscoveryClient discoveryClient;
@Autowired
private ProviderFeign providerFeign;
@GetMapping("hi")
public String sayHi() {
return "Hi";
}
@GetMapping("{serviceId}")
public String DiscoverClient(@PathVariable String serviceId) {
List<ServiceInstance> instances = discoveryClient.getInstances(serviceId);
ServiceInstance serviceInstance = instances.get(0);
String res = serviceInstance.getHost() + ":" + serviceInstance.getPort();
log.info(res);
return res;
}
@GetMapping("provider")
public String testProvider() {
String res = providerFeign.sayHello();
return "传递自Consumer: " + res;
}
}