1、如果你使有Maven或者gradle,先用引入Feign的jar包,這里用maven做例子:
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-core</artifactId>
<version>9.5.0</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-gson</artifactId>
<version>9.5.0</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-slf4j</artifactId>
<version>9.5.0</version>
</dependency>
2、在項目logback-spring.xml加入Feign日志配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="TRACE" />
<logger name="feign.Logger" level="debug" />(這一行是Feign日志配置,這樣在項目中就可以優雅打印日志)
3、添加Feign configure日志
@Configuration
public class FeignConfig {
/**
* 啟用Fegin自定義注解 如@RequestLine @Param
*/
@Bean
public Contract feignContract() {
return new Contract.Default();
}
@Bean
public HelloService fileConnect() {
return Feign.builder()
.encoder(new GsonEncoder())
.decoder(new GsonDecoder())
.options(this.options())
.logger(new Slf4jLogger())
.logLevel(Level.FULL) (這里日志級別可以批定其他選項)
.retryer(new Retryer.Default(5000, 5000, 3))
.requestInterceptor(template -> template.header("Api-Token", "")
.header("Content-Type", "application/json"))
.target(HelloService.class, “http://project”); (這里的接口地址是舉例說明,具體接口地址按自己項目中所用的)
}
/**
* connectTimeoutMillis=1000 鏈接超時時間
readTimeoutMillis=3500 響應超時時間,如果超過3.5秒沒有接過發起下一次請求
*/
private Request.Options options() {
return new Request.Options(1000, 3500);
}
}
4、HelloService
定義接口
public interface HelloService {
@RequestLine("POST /get/name")
Student getUserInfo(Map data);
}
實現類:
public class Student {
@Autowired
private HelloService helloservice;
public Student getUserInfo(String userid){
Map data=new LinkedHashMap(1);
data.put("userid", userId);
Student student=helloservice.getUserInfo(data);
System.out.println("學生信息為:"+new Gson().toJson(student));