天天看点

Spring、Spring Boot、Spring Cloud之间的联系

在本系列文章开始前我们简单谈一谈Spring,Spring Boot,Spring Cloud之间的关系(技术描述等内容各位自行百科吧),让各位小白有初步认识(大佬请路过)。

使用过Spring的伙伴都知道Spring进行web开发有一些非常令人头疼的地方:

  1. 依赖太多,还需要注意各依赖之间的兼容关系
  2. 配置太麻烦,需要配置web.xml,Spring 容器,注解,数据库,连接池,资源映射,事务,切面,过滤器,日志等等,而且大多数时候大部分都相同
  3. 部署和运行麻烦,需要部署到web容器中运行

而Spring Boot可以说是Spring框架的扩展,或者说是Spring的脚手架,它消除了Spring应用程序中所需的xml配置,让我们可以更快捷、高效的进行开发,相较于Spring,Spring Boot的大大简化了这些操作:

  1. 通过Starter poms简化Maven配置和依赖管理
  2. 通过自动配置,解决配置辅助的问题
  3. Spring Boot内嵌web容器(Jetty,Undertow,Tomcat)

Spring Boot的核心思想是约定大于配置,一切都自动完成,在日常工作中我们自需要少量的代码就能创建一个独立、产品级别的Spring应用,大多数的Spirng Boot应用只需要很少的Spring配置就可以搞定。

Spring与Spring Boot在日常开发中最大的区别大概就是Spring Boot没有xml配置要求,大部分都是通过注解的形式,并且Spring Boot是通过应用来启动web容器,而不是通过web容器来启动应用。

而Spring Cloud是一系列框架的有序集合,一套分布式服务治理的框架。它利用了Spring Boot的开发便捷性简化了分布式系统的开发,如服务发现、配置中心、消息总线、负载均衡、熔断保护、监控等,都可以使用Spring Boot做到开发和部署。

Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;在Spring Boot中约定大于配置的,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot来实现,因此Spring Cloud离不开Spring Boot,而Spring Boot可以离开Spring Cloud独立使用开发项目,它们属于依赖的关系。

Spring Cloud的优缺点:

优点:

  1. 易开发和维护,灵活性高
  2. 单个微服务启动快
  3. 隐藏了组件的复杂性
  4. 组件丰富,功能齐全
  5. 方便进行局部修改与部署
  6. 技术选型不受限制,各微服务可不同技术栈
  7. 分布式部署,可对各个微服务所在服务器进行性能扩充

缺点:

  1. 分布式存在复杂性
  2. 运维要求高
  3. 接口调整成本高
  4. 容易重复劳动

正常的学习曲线是Spring->Spring Boot->Spring Cloud。

继续阅读