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

一、调用用户微服务

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进行介绍,尽情期待。。。




评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值