spring、spring boot、spring cloud之间的对比



  Spring Spring Boot Spring Cloud
定义 Spring框架是一个Java平台,提供全面的基础设施支持开发Java应用程序。Spring处理基础设施部分,这样你就可以专注于应用程序部分。Spring框架内,把一级对象通过设计模式封装起来,您可以放心的集成到您自己的应用程序而不用关注他们如何在后台工作。目前,Spring框架由功能组织成大约20个模块。这些模块分为核心容器、数据访问/集成、Web,AOP(面向切面的编程)、instrument(支持和类加载器的实现来在特定的应用服务器上使用)、消息、和测试 用来简化spring应用的初始搭建以及开发过程、使用特定的方式来进行配置(properties或yml文件)、创建独立的spring引用程序 main方法运行、嵌入的Tomcat 无需部署war文件、简化maven配置、自动配置spring添加对应功能starter自动化配置。spring boot来简化spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用 Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。
优点 1. 通过依赖注入(DI)方式,在构造方法或者java bean属性上,依赖关系是明确的和明显的; 2. IoC容器往往是轻量级的,特别是与EJB容器相比。这是有利于在有限的内存和CPU资源的计算机上开发和部署应用程序; 3. Spring不重新发明轮子,相反,它利用一些现有的技术如几个ORM框架,日志框架,JEE,quartz和JDK计时器,其他视图技术等; 4. Spring是模块化的。尽管包和类很重要,你只关心你需要的模块,忽略其它模块; 5. 在Spring测试应用程序很简单,因为依赖环境的代码被移入到框架本身。此外,通过使用JavaBean-style pojo方式,使用依赖注入注入测试数据变得更容易; 6. Spring的web框架是一个设计良好的web MVC框架,它可以很好的替代其它web框架如struts或者其它web框架; 7. Spring提供了一致的事务管理界面,可以管理小到一个本地事务(例如,使用一个数据库)和大到全局事务(例如,使用JTA)。 1. 快速创建独立运行的spring项目与主流框架集成; 2. 使用嵌入式的servlet容器,应用无需打包成war包; 3. starters自动依赖与版本控制;3. 大量的自动配置,简化开发,也可修改默认值; 4. 准生产环境的运行应用监控; 5. 与云计算的天然集成。 解决spring boot使用中的问题: 1. 与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题; 2. 服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务; 3. 冗余-分布式系统中的冗余问题; 4. 负载平衡 –负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布; 5. 性能-问题 由于各种运营开销导致的性能问题。部署复杂性-Devops技能的要求。
区别 Spring最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。 Spring 和 SpringMVC 的问题在于需要配置大量的参数。Spring Boot通过一个自动配置和启动的项来目解决这个问题。SpringBoot专注于快速方便的开发单个个体的微服务。 SpringCloud是关注全局的微服务协调整理治理框架,整合并管理各个微服务,为各个微服务之间提供,配置管理,服务发现,断路器,路由,事件总线等集成服务。SpringCloud依赖于SpringBoot,属于依赖关系
特色 依赖注入 自动配置 管理微服务