springcloud之Feign调用
我们知道,Ribbon的调用方式是基于RestTemplate模板类的,这种方式需要我们自己拼接url,其过程相对复杂,而Feign调用就是为了解决这一问题的,我们只需要在消费方编写和提供方具有相同方法的接口,然后开启相关注解配置即可,使得我们就像调用本地方法一样,使用起来简洁方便,Feign 是在 Ribbon 的基础上进行了改进,也具有负载均衡功能。
1.建立一个使用Feign调用的消费者,此项目在SpringCloud 消费者和提供者文章中消费者80项目基础上进行改进,主要添加了service接口接口和controller的调用方式改变。
@Component
@FeignClient("springcloud-provider-dept")
public interface DeptConsumerService {
@RequestMapping("/dept/add")
public boolean addDept(Dept dept);
@RequestMapping("/dept/get/{id}")
public Dept queryDeptById(@PathVariable("id") int id);
@RequestMapping("/dept/list")
public List<Dept> queryAllDept() ;
}
@RestController
public class DeptConsumerController {
@Autowired
DeptConsumerService deptConsumerService;
@RequestMapping("consumer/dept/add")
public boolean addDept(Dept dept) {
return deptConsumerService.addDept(dept);
}
@RequestMapping("consumer/dept/get/{id}")
public Dept queryDeptById(@PathVariable("id") int id) {
return deptConsumerService.queryDeptById(id);
}
@RequestMapping("consumer/dept/list")
public List<Dept> queryAllDept() {
return deptConsumerService.queryAllDept();
}
}
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages = "com.huang")
@ComponentScan("com.huang")
public class Consumer_dept_feign {
public static void main(String[] args) {
SpringApplication.run(Consumer_dept_feign.class,args);
}
}