您的位置:首页 > 编程语言 > Java开发

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

2017-08-14 16:04 495 查看

一、调用用户微服务

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进行介绍,尽情期待。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息