大家好,我是IT修真院武汉分院第11期学员,一枚正直善良的java程序员。今天给大家分享一下,任务拓展:SPRINGCLOUD服务调用:FEIGN
1.背景介绍
什么是spring cloud?
spring cloud是一个基于spring boot实现的微服务架构开发工具。
它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、
分布式会话和集群状态管理等操作提供了一种简单的开发方式。
2.知识剖析
在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。
Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。这里讲解下基于feign。
3.常见问题
客户端启动找不到datasource
4.解决方案
这是因为spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类,
DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean。
因为工程中没有关于dataSource相关的配置信息,当spring创建dataSource bean因缺少相关的信息就会报错。
5.编码实战
服务端配置
main方法上需要注解exclude=...
这是因为spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类,DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean。因为工程中没有关于dataSource相关的配置信息,当spring创建dataSource bean因缺少相关的信息就会报错。
因为我仅仅只是使用spring boot来写一些很简单的例子来学习它,在Application类上增加@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
阻止spring boot自动注入dataSource bean
客户端端口8765
服务端配置
实现类继承core包接口
端口8762,spring.application.name=service-hi,和服务端对应
注册中心已启动。
启动客户端,成功调用到服务端接口
6.扩展思考
ribbon+resttemplate和feign的区别
这两者的区别就是在客户端上,如何调用服务端。rebbon+resttemplate:使用resttemplate查找服务端url,这点和springrmi、tuscany很像,类似Name.LookingUp("url")一样
而feign则是在接口上注解@FeignClient,在其方法里注解和controller同样的@RequestMapping,两者的区别在于客户端的接口
7.参考文献
参考一:https://www.cnblogs.com/yql1986/p/6819097.html
参考二:http://blog.csdn.net/forezp/article/details/69808079
8.更多讨论
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧