Feign 声明式服务调用
一、 简单服务搭建
pom 引用
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
1、FeignApplication
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class FeignApplication {
public static void main(String[] args) {
SpringApplication.run(FeignApplication.class, args);
}
}
2、 controller层
@RestController
public class CilentController {
@Value("${server.port}")
String port;
@RequestMapping("/show")
public String show(){
System.out.println("客户端1测试信息,启用的端口号:"+port);
return "客户端信息";
}
}
3、 FeignClient
@org.springframework.cloud.netflix.feign.FeignClient("eureka-client")
public interface FeignClient {
@RequestMapping(value = "/show/{id}",method = RequestMethod.GET)
public Object findByUser(@PathVariable("id") String id);
}
二、重写feign 默认设置
1、 配置类
@Configuration
public class FeignConfig {
@Bean
public Contract feignContract() {
return new feign.Contract.Default();
}
}
2、FeignClient 类
FeignClient中name属性为必填, configuration 引用配置类
@org.springframework.cloud.netflix.feign.FeignClient(name="eureka-client",configuration = FeignConfig.class)
public interface FeignClient {
@RequestLine("GET /show/{id}")
public Object findByUser(@Param("id") String id);
}
3、 添加feign日志
yml 配置文件:
logging:
level:
cn.pl.feign.FeignApplication : debug
FeignClient 类中添加日志方法
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}