微服务SpringCloud(二)——Feign

在这里插入图片描述
强更微服务,大家多多支持!!!

简介

Feign是Netflix开发的声明式,模板化的HTTP客户端,其灵感来自Retrofit,JAXRS-2.0以及WebSocket.
Feign可帮助我们更加便捷,优雅的调用HTTP API。
在SpringCloud中,使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就完成了。
Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。
SpringCloud对Feign进行了增强,使Feign支持了SpringMVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便。
换成我的话就是,在消费者项目中添加feign并声明一下你要用提供者里面的要使用的接口,就可以像调用工具类一样便捷。

微服务SpringCloud(二)——Feign_第1张图片

Feign原理参考:https://www.jianshu.com/p/e0218c142d03

1. SpringCloud集成Feign

1.1 Feign依赖


	    org.springframework.cloud
	    spring-cloud-starter-feign
	    1.4.0.RELEASE
	

1.2 开启Feign的启动类

在启动类上添加注解@EnableFeignClients
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class App 
{
    public static void main( String[] args )
    {
    	SpringApplication.run(App.class, args);
    }
}

1.3 Feign接口定义


@FeignClient(value="eureka-client-user-service",configuration=FeignConfiguration.class)
public interface UserRemoteClient {
	@GetMapping("/user/hello")
		String hello();
}

1.4 Feign接口调用

@RestController
public class ArticleController {
	@Autowired
	private RestTemplate restTemplate;
	@Autowired
	UserRemoteClient userRemoteClient;
		
	@GetMapping("/article/callhello2")
	public String callHello2() {
		return restTemplate.getForObject("http://eureka-client-user-service/user/hello", String.class);	
	}
	
	@GetMapping("/article/callhello3")
	public String callHello3() {
		return userRemoteClient.hello();
	}
}
可以通过callHello2() 、callHello3()看出两者调用的差别,使用Feign更加便捷。

1.5 添加Feign日志

为了更加方便的监控接口的调用情况,可以通过feign日志,打印出接口的传输情况。
Fiegn分为:
	NONE:不输出日志
	BASIC:只输出请求方法的URL和响应的状态码以及接口执行的时间。
	HEADERS:将BASIC信息和请求头信息输出。
	FULL:输出完整的请求信息。

1.5.1 添加日志配置

@Configuration
public class FeignConfiguration {
	/**
	 * feign的日志级别
	 * @return
	 */
	@Bean
	Logger.Level feignLoggerLevel(){
		return Logger.Level.FULL;
		
	}
}

并且在FeignClient中添加FeignConfiguration 的扫描

@FeignClient(value="eureka-client-user-service",configuration=FeignConfiguration.class)

application.properties中添加Feign的配置

#指定feign的日志级别
#连接超时
feign.client.config.default.connectTimeout=5000 
#读取超时
feign.client.config.default.readTimeout: 5000 
#日志等级
feign.client.config.default.loggerLevel: basic 

2. Feign的进阶

2.1 Basic配置

Feign可以配置Basic,能访问有权限限制的接口。在FeignConfiguration中添加

@Bean
	public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
		return new BasicAuthRequestInterceptor("user","password");
		
	}

还可以自定义拦截器。

2.2 GZIP压缩配置

这个配置可以提高请求与响应的效率,当Feign 是okhttp3,压缩不会生效。

feign.httpclient.enable=true
feign.okhttp.enable=false

feign.compression.request.enabled=true
feign.compression.response.enabled=true

ok,就先这么多,拜拜哦

你可能感兴趣的:(SpringCloud,java)