-
RestTemplate和WebClient都是Spring自己封装的工具
-
Feign 是 Spring Cloud 的成员
-
Spring Cloud Alibaba 支持对Feign的调用
-
1.需要在消费方consumer项目的pom文件中添加对应的坐标
-
2.需要建立feign对应的接口,在接口中书写provider也就是数据提供方中controller层中对应的方法请求:如下:
3.编写测试的controller,在里面调用接口中定义的方法即可进行远程调用
4.最后切记在项目启动类上加上对应的注解
consumer的pom坐标
org.springframework.boot spring-boot-starter-weborg.apache.httpcomponents httpclient4.5.6 org.projectlombok lombokcom.alibaba fastjson1.2.49 org.springframework.boot spring-boot-starter-testio.springfox springfox-swagger2io.springfox springfox-swagger-uicom.alibaba.cloud spring-cloud-starter-alibaba-nacos-discoveryorg.springframework.boot spring-boot-starter-webfluxorg.springframework.cloud spring-cloud-starter-openfeign
接口feign
package com.czxy.feign;
import com.czxy.domain.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
//远程服务器名 和短路径
@FeignClient(value = "user-service",path = "/user")
public interface UserControllerFeign {
@GetMapping("/findAll")
public List findAll();
@PostMapping("/add")
public String save(@RequestBody User user);
@PutMapping("/update")
public String update(@RequestBody User user);
@DeleteMapping("/del/{id}")
public String delete(@PathVariable("id") Integer id);
@PostMapping("/findByCondition")
public List findByCondition(@RequestBody User user);
}
controller:
package com.czxy.controller;
import com.czxy.domain.User;
import com.czxy.feign.UserControllerFeign;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/feign")
public class TestFeignController {
//feign对象调用
@Resource
private UserControllerFeign userControllerFeign;
@GetMapping("/findAll")
public List findAll(){
return userControllerFeign.findAll();
}
@PostMapping("/add")
public String save(@RequestBody User user){
return userControllerFeign.save(user);
}
@PutMapping("/update")
public String update(@RequestBody User user){
return userControllerFeign.update(user);
}
@DeleteMapping("/del/{id}")
public String delete(@PathVariable("id") Integer id){
return userControllerFeign.delete(id);
}
@PostMapping("/findByCondition")
public List findByCondition(@RequestBody User user){
return userControllerFeign.findByCondition(user);
}
}
项目启动类:
package com.czxy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.web.reactive.config.EnableWebFlux;
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients//feign远程调用
public class CompanyHttpApplication {
public static void main(String[] args) {
SpringApplication.run(CompanyHttpApplication.class,args);
}
}



