SpringCloud(十二):Feign的demo之覆写Feign的默认配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013037201/article/details/77159623

一、调用用户微服务

1、改写原先的feign服务为microservice-consumer-movie-feign-customizing

2、编写Configuration1.java

package com.itmuch.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import feign.Contract;
import feign.Logger;

@Configuration
public class Configuration1 {
	@Bean
	public Contract feignContract(){
		return new feign.Contract.Default();
	}
}
Spring Cloud Netflix 默认的SpringMvcController将替换为feign.Contract.Default。

3、修改UserFeignClient

@FeignClient(name="microservice-provider-user", configuration=Configuration1.class)
public interface UserFeignClient {
	
	@RequestLine("GET /simple/{id}")
	public User findById(@Param("id") Long id);
}
这里讲Configuration1的配置加了进来,匹配注解和获得参数的注解也变了。

4、启动测试,第一次超时报错,再次请求正常 。

关于超时问题,后面博客分析解决。


二、访问Eureka中注册的服务


用feign来实现:

1、编写Configuration2.java

package com.itmuch.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import feign.auth.BasicAuthRequestInterceptor;

@Configuration
public class Configuration2 {
	@Bean
	public BasicAuthRequestInterceptor basicAuthRequestInterceptor(){
		return new BasicAuthRequestInterceptor("user", "password123");
	}
}

这里使用的是默认的SpringMvcContract,

2、在MovieController.java中添加内容:

@GetMapping("/{serviceName}")
public String findServiceInfoFromEurekaByServiceName(@PathVariable String serviceName){
	return this.feignClient2.findServiceInfoFromEurekaByServiceName(serviceName);
}
3、编写UserFeignClient2.java

package com.itmuch.cloud.feign;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.itmuch.cloud.entity.User;
import com.itmuch.config.Configuration1;
import com.itmuch.config.Configuration2;

import feign.RequestLine;

@FeignClient(name="xxxx", url="http://localhost:8761/", configuration=Configuration2.class)
public interface UserFeignClient2 {
	
	@RequestMapping(value="/eureka/apps/{serviceName}",method=RequestMethod.GET)
	public String findServiceInfoFromEurekaByServiceName(@PathVariable("serviceName") String serviceName);
}

4、启动测试, 第一次超时报错,再次请求正常 。


小结

下篇继续对Feign日志的demo进行介绍,尽情期待。。。




猜你喜欢

转载自blog.csdn.net/u013037201/article/details/77159623