feign是一款非常好用的,能直接把我们省去端口号的编写,
下面直接开始,需要有一定的SpringCloud的基础,不然可能看不明白,我这里很多都是关键步骤。敬请原谅。
首先我们需要引入feign的依赖
<!-- 引入openfiegn-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
编写一个接口,加上FeiginClient注解,再写上路径,(这个路径是全局的路径)
然后在启动类上面添加@EnableFeignClients注解
@SpringBootApplication
@EnableFeignClients
public class ServiceProviderApplication {
//8050端口
public static void main(String[] args) {
SpringApplication.run(ServiceProviderApplication.class, args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder builder){
RestTemplate restTemplate=builder.build();
return restTemplate;
}
//设置随机端口
// @Bean
// public IRule rule(){
//
// return new RandomRule();
//
// }
}
接下来是controller的编写,大家可以对比一下使用feign与不使用feign的区别,还需要把远程接口注入
@RestController
@RefreshScope
public class ProviderController {
@Autowired
RestTemplate restTemplate;
@Autowired
RemoteProviderService providerService;
// @Value("${spring.datasource.username}")
// private String username;
@RequestMapping("/getRemoteHello")
public String hello() {
System.out.println("下单成功我是8050端口我要去连接8060端口");
// String forObject = restTemplate.getForObject("http://service-const/chd", String.class);
String forObject =providerService.hello();//这是第二使用feign种方式
// System.out.println("拿到名称了"+username);
System.out.println("通信成功" + forObject);
return "hello word" + forObject;
}
}
接下来是通信类的编写,只需要把路径位置写对就行了
我们直接把两个模块都启动,然后网页上输入路径来验证,如下图就证明成功了,
这里已经通信成功了,使用feign是不是非常方便也很简单,希望能帮助各位小伙伴