进行应用间通信有两种方式:restTemplate 和 feign
feign是伪RPC,内部使用Ribbon做负载均衡
在pom中添加依赖,注意是openfeign,不是feign
1 2 3 4
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
|
在启动的主类上添加 @EnableFeignClients
注解(如果是加载的模块,需要配置为@EnableFeignClients(basePackages="com.xxx.xxx.xxx")
)
新建Product接口文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| @FeignClient(name = "PRODUCT") public interface ProductFeign {
@RequestMapping("/test/hello") public String getHello();
@RequestMapping("/test/get") public String getProduct(int id);
@RequestMapping("/test/query") public String queryProduct(Product product);
@RequestMapping("/test/query2") public String queryProduct(@RequestParam("name") String name, @RequestParam("weight") int weight);
@RequestMapping("/test/query3") public String queryProduct(@RequestParam("product") Product product, @RequestParam("weight") int weight); }
|
调用上面定义的接口方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| @RestController @RequestMapping("/restTemplate") class Controller {
@Resource private ProductFeign productFeign;
@RequestMapping("/hello") public String getHello() { String str = productFeign.getHello(); return str; } }
|