标签:png style add java 面向 http feign mapping dep
之前使用的是Ribbon+RestTemplate调用,通过的是微服务的名字进行调用,实现负载均衡
但是为了满足接口编程,提供了Feign
在 ms-common-api 和 ms-consumer-dept-80-feign 引入坐标
<!--feign 客户端负载均衡--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
package org.maple.service; import org.maple.entity.Dept; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; /** * @author mapleins * @Date 2019-01-12 23:10 * @Desc 通过接口和注解 面向接口编程访问微服务 **/ @FeignClient("ms-provider-dept") public interface DeptClientService { @PostMapping("/dept/add") boolean add(@RequestBody Dept dept); @GetMapping("/dept/get/{id}") Dept get(@PathVariable("id") Long id); @GetMapping("/dept/list") List<Dept> list(); }
package org.maple; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.openfeign.EnableFeignClients; /** * @author mapleins * @Date 2019-01-09 20:26 * @Desc **/ @SpringBootApplication @EnableEurekaClient @EnableFeignClients(basePackages = {"org.maple.service"}) //扫描ms-common-api中的service包 public class App_Consumer_Dept_80_Feign { public static void main(String[] args) { SpringApplication.run(App_Consumer_Dept_80_Feign.class, args); } }
这样就相当于不是去调用微服务去编程,而是通过controller调用service层,实现接口编程,并且自带ribbon的轮询算法
package org.maple.controller; import org.maple.entity.Dept; import org.maple.service.DeptClientService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @author mapleins * @Date 2019-01-09 20:10 * @Desc **/ @RestController public class DeptController_Consumer { @Autowired private DeptClientService service; @GetMapping("/consumer/dept/get/{id}") public Dept get(@PathVariable("id") Long id){ return service.get(id); } @GetMapping("/consumer/dept/list") public List<Dept> list(){ return service.list(); } @PostMapping("/consumer/dept/add") public boolean add(Dept dept){ return service.add(dept); } }
标签:png style add java 面向 http feign mapping dep
原文地址:https://www.cnblogs.com/mapleins/p/10261520.html