Python 官方文档:入门教程 => 点击学习
目录简介使用总结简介 feign是声明式的WEB service客户端,它让微服务之间的调用变得更简单了,类似controller调用service。spring cloud集成了
feign是声明式的WEB service客户端,它让微服务之间的调用变得更简单了,类似controller调用service。spring cloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的Http客户端。
在SpringCloud中不仅可以使用Ribbo进行负载均衡,也可以使用Feign。Feign是在Ribbon的基础上进行了一次改进,采用接口的方式实现负载均衡。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
@FeignClient(value = "PROVIDER-NAME")声明这是一个FeignClient,value指明需要的服务id
@FeignClient(value = "PROVIDER-NAME")
public interface DeptClientService {
// 请求的路径需与服务提供者的路径一致
@RequestMapping(value = "/dev/add")
boolean add(Dept dept);
@RequestMapping(value = "/dev/{id}")
Dept queryByID(@PathVariable("id") Long id );
@PostMapping(value = "/dev/list")
List<Dept> queryAll();
}
我们不再使用RestTemplate来获取所需的对象,而是通过之前定义的接口来获取
@RestController
public class ConsumerController {
@Autowired
private DeptClientService service;
@RequestMapping("/consumer/get/{id}")
public Dept getByID(@PathVariable("id") Long id){
return this.service.queryByID(id);
}
@RequestMapping("/consumer/add")
public boolean add(String dname){
Dept dept = new Dept();
dept.setDname(dname);
return this.service.add(dept);
}
@RequestMapping("/consumer/list")
public List<Dept> list(){
return this.service.queryAll();
}
}
@EnableFeignClients 开启Feign负载均衡
@SpringBootApplication(scanBasePackages = "com")
@EnableEurekaClient
@EnableFeignClients(basePackages = "com.service")
public class FeignApplication {
public static void main(String[] args) {
SpringApplication.run(FeignApplication.class,args);
}
}
Ribbon
public class ConsumerController {
@Autowired
private RestTemplate template;
private static final String url="http://PROVIDER-NAME";
@RequestMapping("/consumer/get/{id}")
public Dept getByID(@PathVariable long id){
//请求的路径,返回的对象
Dept getEntity = template.getForObject(url + "/dev/" + id, Dept.class);
return getEntity;
}
@RequestMapping("/consumer/add")
public boolean add(String dname){
Dept dept = new Dept();
dept.setDname(dname);
System.out.println(dept);
//请求的路径,传递的参数,返回的对象
return template.postForObject(url+ "/dev/add",dept,Boolean.class);
}
@RequestMapping("/consumer/list")
public List<Dept> list(){
//请求的路径,返回的对象
return template.postForObject(url+"/dev/list",void.class,List.class);
}
}
Feign
@RestController
public class ConsumerController {
@Autowired
private DeptClientService service;
@RequestMapping("/consumer/get/{id}")
public Dept getByID(@PathVariable("id") Long id){
return this.service.queryByID(id);
}
@RequestMapping("/consumer/add")
public boolean add(String dname){
Dept dept = new Dept();
dept.setDname(dname);
return this.service.add(dept);
}
@RequestMapping("/consumer/list")
public List<Dept> list(){
return this.service.queryAll();
}
}
Feign的使用与Ribbon不同的地方在于
以上就是SprinGCloud Feign的使用简介的详细内容,更多关于SpringCloud Feign的资料请关注编程网其它相关文章!
--结束END--
本文标题: SpringCloud Feign的使用简介
本文链接: https://www.lsjlt.com/news/123763.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0