一、调用用户微服务
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进行介绍,尽情期待。。。