存在问题 和 背景
在微服务框架中, 假如有个User service provide 了若干接口查询用户数据。
而其他若干微服务, 例如 order sevice, bill service, payment service 都要访问user service
我们则会在这3 个微服务都编写对应FeignClient for User service。
这会必然造成大量的代码重复, 所以有事我们有必要让写User service controller的开发,顺便把User Client 也写好, 包括对应的 Entity Class, 默认配置 放在1个新项目中。
然后其他微服务只需要引入这个library
那我们新建1个branch 开发编代码
创建1个新的module
如果发现这个module project 创建后并没有在IDEA被maven管理,则要通过Add support model 菜单加入Maven support
修改feign module 项目pom.xml , 引入 open-feign 依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
添加 User entity 类, UserClient 接口, config 配置类(主要for日志)
在order-service 项目的pom.xml 引入 feign-api module 依赖
<!-- import feign api model -->
<dependency>
<groupId>com.home.feign</groupId>
<artifactId>user-feign-api</artifactId>
<version>1.0</version>
</dependency>
修改orderservice springboot 启动类
修改 FeignClientConfiguration 默认配置的依赖
由于UserClient 不在Order service 项目所以不会被spring 容器扫描出来这个bean并实例化
所以我们必须在@EnableFeignClients 加上 clients={UserClient.class}
import com.home.feign.config.FeignClientConfiguration;
@SpringBootApplication
@EnableFeignClients(defaultConfiguration = FeignClientConfiguration.class, clients={UserClient.class})
@Import(SpringConfiguration.class)
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
}
修改Orderservice 中 entity 类 Order 和 service 类 Orderservice
对Entity类 User 的依赖 我们可以直接用feign-api project的
import com.home.feign.entity.User;
接下来可以启动测试了
亲测, 这么做后, 所有日志level配置失效 待解决