Spring、SpringBoot、SpringCloud区别

Spring是一个生态体系(也可以说是技术体系),是集大成者,它包含了Spring Framework、Spring Boot、Spring Cloud等。

spring是分层的Java SE/EE 应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层SpringMVC 和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开源框架。

SpringMVC是spring基础之上的一个MVC框架,用以替代初期的SSH框架;(spring Framework本身没有Web功能),主要处理web开发的路径映射和视图渲染,属于spring框架中WEB层开发的一部分;涵盖面包括前端视图开发、文件配置、后台接口逻辑开发等,XML、config等配置相对比较繁琐复杂;

Spring的优缺点

优点:

Spring是ava企业版(Uava Enterprise Edition, JEE, 也称J2EE) 的轻量级代替品。无需开发重量级的EnterpriseJavaBean (EJB) , Spring为企业级Java开发提供了-种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object, POJO)实现了E]B的功能。

缺点:

虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置, 而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于ava的配置,这是一种类型安全的可重构配置方式,可以代替XML。

所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架-样,Spring实用, 但与此同时它要求的回报也不少。

除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。

SpringBoot 使用了默认大于配置的理念,集成了快速开发的Spring多个插件,同时自动过滤不需要配置的多余的插件,简化了项目的开发配置流程,一定程度上取消xml配置,是一套快速配置开发的脚手架,能快速开发单个微服务;

SpringBoot专注于微服务方面的接口开发,和前端解耦;

SpringBoot的特点

创建独立的spring应用程序

直接内嵌tomcat、jetty和undertow(不需要打包成war包部署)

提供了固定化的“starter”配置,以简化构建配置

 尽可能的自动配置spring和第三方库

提供产品级的功能,如:安全指标、运行状况监测和外部化配置等

绝对不会生成代码,并且不需要XML配置


SpringBoot的核心功能

  • 起步依赖

起步依赖本质上是一个Maven项目对象模型(Project Object Model, POM) ,定义了对其他库的传递依赖,这些东西加在一-起即支持某项功能。

简单的说,起步依赖就是将具备某种功能的坐标打包到-起,并提供-一些默认的功能。

  • 自动配置

Spring Boot的自动配置是一个运行时 (更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。

SpringCloud大部分的功能插件都是基于SpringBoot去实现的,SpringCloud关注于全局的微服务整合和管理,将多个SpringBoot单体微服务进行整合以及管理;  SpringCloud依赖于SpringBoot开发,而SpringBoot可以独立开发;

SpringCloud基于Spring Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。

发布了215 篇原创文章 · 获赞 37 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/MirabelleZWH/article/details/103056910