总结:
1.导入openfeign的包
2.创建一个接口
@FeignClient配置服务的名称
配置调用的服务的url (拷贝调用服务接口过来修改)
3.启动类上打上@EnableFeignclients注解 (是否配置包的原则:feign所在包和启动类在同一级,就不用配置)
4,使用注入对象使用对象调用方法
pom.xml (消费者的)
<!--feign的支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
feign的接口
package cn.itsource.feign;
import cn.itsource.domain.User;
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.RequestMapping;
@FeignClient(value ="provider")
@RequestMapping("/user")
public interface ProviderFeignClient {
@GetMapping("/{id}")
User getUserById(@PathVariable("id") Integer id);
}
消费者 启动类:
package cn.itsource;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients // 开启feign的调用
//@EnableFeignClients(basePackages = {"cn.itsource.feign"}) //接口所在包 和 启动类是平级,就不用配置包的所在位置
public class ConsumerApp1020 {
public static void main(String[] args) {
SpringApplication.run(ConsumerApp1020.class);
}
}
feign的使用:
注入feign
通过对象.方法调用
package cn.itsource.controller;
import cn.itsource.domain.User;
import cn.itsource.feign.ProviderFeignClient;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
@RequestMapping("/consumer")
public class RemoteProviderController_feign {
@Autowired
private ProviderFeignClient feignClient; //注入自己的feign的接口,spring会创建代理对象(启动类加@EnableFeignClients注解)
@GetMapping("/getUser/{id}")
public User getUser(@PathVariable("id") Integer id){
User user = feignClient.getUserById(id); // 对象.方法调用
return user;
}
}