1. 导入jarbao
<!-- feign服务调用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
<!-- 引入SpringCloud Eureka client的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
<!-- 约束整个项目的SpringCloud版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2. 入口类
@SpringBootApplication
/**
* 声明当前项目为Eureka客户端
* 只能注册到Eureka Servser注册中心
*/
// @EnableEurekaClient
/**
* 声明当前客户端为可被发现
* 不仅可以注册到Eureka Server 也可以注册到其他注册中心
*/
@EnableDiscoveryClient
/**
* 声明当前服务可以使用Feign(服务调用)
*/
@EnableFeignClients
public class EurekaclientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaclientApplication.class, args);
}
}
3. 编写一个接口
/**
* FeignClient声明当前接口为Feign的客户端
* 当前接口就具备了发送HTTP请求的能力
*
* FeignClient(value = "SpringBoot-Cloud") vlaue = 为被调用服务的名字
*/
@FeignClient(value = "SpringBoot-Cloud")
public interface userfeign {
/***
* 定义服务调用的方法
*
* 当前方法对应被调用的方法-->>需添加@GetMapping注解 参数为被调用方法的路径(全路径)
* 且方法的形参和返回值类型必须和被调用方法一致
*
* 注意! 因为请求方式为Rest风格 所以参数前必须加 @RequestParam注解
* @param id
* @return
*/
@GetMapping("getidpost")
String getproductbyid(@RequestParam Integer id);
}
4. conterller控制层服务
@RestController
public class Clientterller {
@Autowired
private userfeign userfeign; // 自动注入接口对象
@GetMapping("userConterller")
public String userConterller(Integer id){
/**
* 和使用其他接口一样, 使用Feign接口中的服务方法
*
* 服务调用细节,如 请求的发送 负载均衡 都被封装了
*/
return "用户服务调用成功: \t"+userfeign.getproductbyid(id);
}
}
5. 打开Feign的日志功能
# 入口类
@Bean
public Logger.Level Configuration(){
/**
* Feign的日志配置有四种:
*
* --NONE 不记录日志
* --BASIC 仅仅记录请求方法, url, 响应状态码, 执行时间
* --HEADERS 记录Basic级别的基础上, 记录请求和响应的header
* --FULL 记录请求和响应的header, body和元数据
*/
return Logger.Level.FULL;
}
# 配置文件
# Feign日志服务配置
logging:
level:
# 全局日志
# root: debug
# 配置服务调用类的所在的包名
eurekaclient.eurekaclient.Service: debug
eurekaclient.eurekaclient.Conterller: debug