【SpringCloud】(九):Feign的自定义配置
来源:互联网 发布:科学大众网络比赛 编辑:程序博客网 时间:2024/05/17 23:50
上篇文章介绍了Feign以及它的基本使用,下面我们来完成Feign的定义配置,可以类比Ribbon的自定义的配置方式;
配置中也存在@Configuration和@ComponentScan冲突,不要把Configuration的类配置在@ComponentScan能扫描的路径
根据文档内容来自定义Feign;
1.启动类
package com.dynamic.cloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.cloud.netflix.feign.EnableFeignClients;@SpringBootApplication@EnableEurekaClient@EnableFeignClientspublic class ComsumerMovieFeignApplication {public static void main(String[] args) {SpringApplication.run(ComsumerMovieFeignApplication.class, args);}}
2.Controller
package com.dynamic.cloud.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;import com.dynamic.cloud.entity.User;import com.dynamic.cloud.feign.FeignClient2;import com.dynamic.cloud.feign.UserFeignClient;@RestControllerpublic class MovieController {@Autowiredprivate UserFeignClient userFeignClient;@Autowiredprivate FeignClient2 feignClient2;@GetMapping("/movie/{id}")public User findById(@PathVariable Long id){return this.userFeignClient.findById(id);}@GetMapping("/{serviceName}")public String findServiceInfoFromEurekaByServiceName(@PathVariable("serviceName")String serviceName){return this.feignClient2.findServiceInfoFromEurekaByServiceName(serviceName);}}
Controller中注入了两个FeignClient ,分别配置不同的@Configuration。
一个是UserFeignClient:调用用户微服务。
一个是FeignClient2:通过传入用户微服务的ServicId 从Eureka中获取信息。
UserFeignClient
package com.dynamic.cloud.feign;import org.springframework.cloud.netflix.feign.FeignClient;import com.dynamic.cloud.entity.User;import com.dynamic.config.FooConfiguration;import feign.Param;import feign.RequestLine;@FeignClient(name="microservice-provider-user",configuration = FooConfiguration.class)public interface UserFeignClient {@RequestLine("GET /simple/{id}") public User findById(@Param("id") Long id); }
配置类:FooConfiguration
package com.dynamic.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import feign.Contract;import feign.Logger;@Configurationpublic class FooConfiguration { @Bean public Contract feignContract() { return new feign.Contract.Default(); } @Bean Logger.Level feignLoggerLevel() { return Logger.Level.FULL; }}
Logger.Level.FULL设置打印日志的级别
FeignClient2
package com.dynamic.cloud.feign;import org.springframework.cloud.netflix.feign.FeignClient;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import com.dynamic.config.AuthConfiguration;@FeignClient(name="xxx",url="http://localhost:8761/",configuration=AuthConfiguration.class)public interface FeignClient2 {@RequestMapping(value="/eureka/apps/{serviceName}")public String findServiceInfoFromEurekaByServiceName(@PathVariable("serviceName") String serviceName);}
配置类:AuthConfiguration
设置 Eureka Server的访问的用户名和密码
package com.dynamic.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import feign.auth.BasicAuthRequestInterceptor;@Configurationpublic class AuthConfiguration { @Bean public BasicAuthRequestInterceptor basicAuthRequestInterceptor() { return new BasicAuthRequestInterceptor("user","pass123"); }}
阅读全文
2 0
- 【SpringCloud】(九):Feign的自定义配置
- SpringCloud(十二):Feign的demo之覆写Feign的默认配置
- Feign的自定义配置
- SpringCloud(十一):Feign的demo之添加Feign
- SpringCloud--服务消费者(Feign)
- SpringCloud: 服务消费者(Feign)
- SpringCloud之Feign(一)
- SpringCloud之Feign(二)
- 【SpringCloud】(十四):Feign对Hystrix的支持 fallbackFactory
- SpringCloud(十三):Feign的demo之日志
- SpringCloud(十四):Feign的demo之解决超时问题
- Spring Cloud 的 Feign 组件 自定义配置
- idea创建springcloud项目图文教程(Feign实现负载均衡)(九)
- SpringCloud(六)springcloud feign
- springcloud学习(四)之Feign
- 【SpringCloud】(八):认识Feign及使用
- SpringCloud教程三:服务消费者(Feign)
- SpringCloud(七):Ribbon自定义配置
- jsp九大隐式对象和jsp内置标签和jsp的usebean标签
- Unity3D基础(1)_AssetBundle
- 在CentOS 7系统上安装RabbitMQ
- 2017 暑假艾教集训 day9(整体二分 + cdq分治 cdq真是我女神!!!)
- 22大街
- 【SpringCloud】(九):Feign的自定义配置
- 从零开始的ubuntu下的caffe配置
- 10020---Java sleep和wait区别
- git生成公钥
- Linux系统DNS高速缓存
- HDU-4705 Y(树型dp)
- 开发工具IDEA破解方法
- 使用java的过滤器filter备忘(get和post)
- 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/ch