代码和配置
1. alibaba-feign-api
第一步:引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring‐cloud‐starter‐openfeign</artifactId>
</dependency>
第二步:修改打包方式(因为该工程式一个普通的jar 不需要打可执行的jar)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven‐jar‐plugin</artifactId>
</plugin>
</plugins>
</build>
第三步:编写声明式接口
@FeignClient(name = "product‐center")
public interface ProductCenterFeignApi {
/** * 声明式接口,远程调用http://product‐center/selectProductInfoById/{productNo}
* @param productNo
* * @return
* */
@RequestMapping("/selectProductInfoById/{productNo}")
ProductInfo selectProductInfoById(
@PathVariable("productNo")
String productNo);
}
2.调用者工程alibaba-feign-order
第一步:引入依赖包
<dependency>
<groupId>com.tuling</groupId>
<artifactId>alibaba‐feign‐api</artifactId>
<version>0.0.1‐SNAPSHOT</version>
</dependency>
第二步: 开启注解加入 @EnableFeignClients
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class AlibabaFeignOrderApplication {
public static void main(String[] args) {
SpringApplication.run(Tulingvip03MsAlibabaFeignOrderApplication.class,
args);
}
}
第三步:调用方式(像调用本地方式一样调用远程服务)
@Autowired
private ProductCenterFeignApi productCenterFeignApi;
ProductInfo productInfo = productCenterFeignApi.selectProductInfoById(orderNo);
3.我们服务提供者alibaba-feign-product 的controller 需要实现我们的productCenterFeignApi接口,防止修 改(比如我们的productCenterFeignApi修改了,若没有实现该接口,服务提供者感知不到)
第一步:引入依赖 tulingvip03-ms-alibaba-feign-api
第二步:我们的ProductInfoController实现productCenterFeignApi接口
@RestController
public class ProductInfoController implements ProductCenterFeignApi
二:
2.1)默认情况下,Feign的调用式不打印日志,我们需要通过自定义来打印我们的Feign的日志 (basic适 用于生产环境)
①: 我们在talibaba-feign-api工程中添加Feign的自定义配置
public class ProductCenterFeignConfig {
@Bean
public Logger.Level level() {
//return Logger.Level.FULL;
return Logger.Level.BASIC;
}
}
@FeignClient(name = "product‐center",configuration = ProductCenterFeignConfig.class)
public interface ProductCenterFeignApi {
/*** 声明式接口,远程调用http://product‐center/selectProductInfoById/{productNo}
* @param productNo
* @return
* */
*
@RequestMapping("/selectProductInfoById/{productNo}")
ProductInfo selectProductInfoById(@PathVariable("productNo") String productNo);
}
②:针对调用端工程alibaba-customcfg-feign-order针对日志com.tuling.feignapi 包下的日志级 别必须调整为DEBUG级别的 不然是不会打印日志的
logging:
level:
com:
tuling:
feignapi: debug