feigen:
1 依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
2 用法
启动类
@EnableFeignClients
接口处
package com.order.client;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* @Author: huey
* @Desc:
*/
//@FeignClient //注意 这里一定要给数据 就是 你要访问的服务(已经注册在服务中心)
@FeignClient(name = "product")
public interface ProductClient {
@GetMapping("/msg")
String test();
}
3
实际用法
package com.order.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: huey
* @Desc:
*/
@RestController
@Slf4j
public class ClientController {
@Autowired
private ProductClient productClient;
@GetMapping("/getProductMsg")
public String getProductMsg(){
String msg=productClient.test();
log.info("mes={}",msg);
return msg;
}
}
restTemplate:
1
log.info("第一种用法");
RestTemplate restTemplate=new RestTemplate();
String res=restTemplate.getForObject("http://localhost:8082/service/msg",String.class);
log.info("res={}",res);
2
/* @Autowired
private LoadBalancerClient loadBalancerClient;*/
log.info("第二种");
RestTemplate restTemplate1=new RestTemplate();
ServiceInstance serviceInstance=loadBalancerClient.choose("ORDER");
String url=String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort()+"/service/msg");
restTemplate1.getForObject(url,String.class);*/
3
/**
* @Author: huey
* @Desc:
*/
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate(); //与下下面差不多
}
}
log.info("第三种");
String res=restTemplate.getForObject("http://ORDER/service/msg",String.class);
log.info("res={}",res);
4
bean注入:
@Bean
RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder){
return restTemplateBuilder.build();//与上上面差不多
}