父项目继续沿用之前的文章(https://www.toutiao.com/i6867150224364667403/)中的工程
引入feign之后,我们定义接口类,上面还得写一遍springmvc的相关注解,等于写了两遍。可以考虑把接口单独写成一个项目,服务提供者的controller直接实现该接口,controller上就不用写springmvc的一些注解了。服务消费者引入这个接口项目,使用时直接注入接口,也不用自己再定义一遍了。
一 创建接口项目feign-client-api
1.1 Pom.xml中的依赖
org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-openfeign
1.2 接口定义
![b2b352ef21675d0ca9289025c7afb335.png](https://i-blog.csdnimg.cn/blog_migrate/4ad4b37a95a9c2fdcede7829009d51f6.jpeg)
二 创建服务提供者feign-client-provider
2.1 Pom.xml中的依赖,注意要引入接口项目
org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-web com.xtl feign-client-api ${project.version}
2.2 创建controller实现接口
![6eb433297652794e0fb0b78d596ca813.png](https://i-blog.csdnimg.cn/blog_migrate/895524c78190d474d3df31f03bbad753.jpeg)
2.3 配置application.yml
server: port: 50001eureka: client: service-url: defaultZone: http://localhost:20000/eureka/spring: application: name: feign-client-provider
三 创建消费者 feign-client-consumer
3.1 pom依赖
org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-web com.xtl feign-client-api ${project.version} 3.2 创建controller,注入接口
3.2 创建controller,注入接口
![028851b331709a6b99a4d5098e3c4278.png](https://i-blog.csdnimg.cn/blog_migrate/475b653299860e4bdb9b7541a84c2194.jpeg)
3.3 配置application.yml
server: port: 60001eureka: client: service-url: defaultZone: http://localhost:20000/eureka/spring: application: name: feign-client-consumer
3.4 启动项目,调用
![2fd09781fcf7b8435444d4de7115c7ae.png](https://i-blog.csdnimg.cn/blog_migrate/2a9735c4f514ce417235ec3dc603057c.jpeg)
四 想法
Springmvc的@RequestMapping等等注解可以被继承
因此我们可以把接口单独抽取成一个项目
让服务提供者实现,服务消费者直接注入
服务提供者负责接口项目的维护
服务消费者就不需要关心这些变化,直接使用即可