SpringCloud和SpringBoot有什么区别
这篇文章将为大家详细讲解有关SpringCloud 和SpringBoot 有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、成都微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了市中免费建站欢迎大家使用!
一 . SpringBoot
1.简介
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。
2.特点
SpringBoot所具备的特征有:
(1)可以创建独立的 Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
(2)内嵌Tomcat或Jetty等Servlet容器;
(3)提供自动配置的“starter”项目对象模型(POMS)以简化 Maven配置;
(4)尽可能自动配置Spring容器;
(5)提供准备好的特性,如指标、健康检查和外部化配置;
(6)绝对没有代码生成,不需要XML配置。
3.重要策略
SpringBoot框架中还有两个非常重要的策略: 开箱即用和 约定优于配置。开箱即用,Outofbox,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。约定优于配置,Convention over configuration,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。
SpringBoot应用系统开发模板的基本架构设计从前端到后台进行说明:前端常使用模板引擎,主要有 FreeMarker和Thymeleaf,它们都是用 Java语言编写的,渲染模板并输出相应文本,使得界面的设计与应用的逻辑分离,同时前端开发还会使用到Bootstrap、AngularJS、J Query等;在浏览器的数据传输格式上采用 Json,非xml,同时提供 RESTfulAPI; SpringMVC框架用于数据到达服务器后处理请求;到数据访问层主要有Hibernate、 MyBatis、JPA等持久层框架;数据库常用 MySQL;开发工具推荐IntelliJIDEA。
4. 核心原理
SpringBoot的核心原理是基于SpringMVC无配置文件完全注解化 + 内置Tomcat实现SpringBoot框架,使用Main函数启动.
二 . SpringCloud
1.简介
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、等集成服务
SpringBoot不依赖于SpringCloud,SpringCloud依赖于SpringBoot,属于依赖关系
2.特点
优点:
1) 服务拆分粒度更细,有利于资源重复利用,有利于提高开发效率
2) 可以更精准的制定优化服务方案,提高系统的可维护性
3) 微服务架构采用去中心化思想,服务之间采用Restful等轻量级通讯,比ESB更轻量
4) 适于互联网时代,产品迭代周期更短
缺点:
1) 微服务过多,治理成本高,不利于维护系统
2) 分布式系统开发的成本高(容错,分布式事务等)对团队挑战大
总的来说优点大过于缺点,目前看来SpringCloud是一套非常完善的分布式框架,目前很多企业开始用微服务
3. 常用组件
SpringCloud 主要涉及的组件包括 :
1) Eureka : 服务注册中心,用于管理服务(服务的注册、发现)
2)Ribbon : 负载均衡,用于搭建集群环境.(同一个功能配置多个tomcat,负载均衡会选择多个tomcat其中一个)
3)Hystrix : 熔断器,与正主断了联系,使用备选方案.能够防止服务的雪崩效应.
4)Feign : 服务调用/远程调用 , 服务与服务之间进行调用,类似于HttpClient
5)Zuul : 服务网关,用于统一程序入口,方便进行管理,提供路由转发、请求过滤等功能
4.核心原理
想了解更多关于SpringCloud的详细信息的话可以访问以下内容
<<超详细的SpringCloud底层原理>>
三 . 区别
SpringBoot 和 SpringCloud 有以下区别 :
1) SpringBoot专注于快速方便的开发单个个体微服务。
2) SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并且管理起来,为各个服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、精选决策、分布式会话等集成服务。
3) SpringBoot可以离开SpringCloud独立开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系。
4) SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。
这就是小喵今天所要分享的知识,
结尾再附上一个小小的面试题 :
什么是SpringBoot ? 什么是SpringCloud ?两者之间有什么区别?
1) springboot是一个快速开发框架,专注于快速方便的开发单个个体的微服务,
为什么是快速开发框架: 它是一个服务于spring框架的框架,它简化了配置文件,可以快速构建web应用,内置tomcat,无需打包部署,直接运行。
核心原理:是基于SpringMVC无配置文件完全注解化+内置tomcat实现SpringBoot框架,使用Main函数启动.
2) SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、等集成服务
3) SpringBoot不依赖于SpringCloud,SpringCloud依赖于SpringBoot,属于依赖关系
关于SpringCloud 和SpringBoot 有什么区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
当前题目:SpringCloud和SpringBoot有什么区别
浏览地址:http://myzitong.com/article/pgihsp.html