1.定义:SpringBoot框架是一个用于整合Spring各项功能的中间件。
2.核心思想:约定优先于配置。
3.作用:减少配置,实现spring应用快速开发。
4.具体功能:提供了常用第三方库的默认配置。
5.特点()
5.1 快速构建项目
1. Eclipse(MyEclipse)通过创建maven项目方式创建Spring Boot项目,若Eclipse安装了Spring Tools则直接创建Spring Starter Project。
2.IDEA通过床架Spring Initializr方式创建Spring Boot项目。
3.Spring官方文档在线生成Spring Boot项目,官网地址https://start.spring.io/。具体操作,访问官方文档,选择版本、构建工具,点击Generate Project,自动下载Spring Boot项目压缩包。
5.2 内置Web容器
内置了Tomcat/Jetty/Undertow等Web容器
Spring Boot 1.x 默认为Tomcat,Spring Boot 2.x 引入spring-boot-starter-web依赖,则为Tomcat,引入spring-boot-starter-webflux依赖,则为Netty。除了使用默认Web容器外,也可以根据场景选择合适的starter配置Web容器,是当Web容器启动成功后吗?应用一个默认端口为8080的HTTP服务。
5.3 提供starter依赖机制
Spring Boot框架整合了一切常用的maven依赖。比如Spring Boot项目使用Web(即Spring MVC),则只需在maven依赖中添加spring-boot-starter-web依赖即可,如果使用MySQL数据库,则Spring Boot会自动加入MySQ依赖,然后在配置文件中配置数据库信息就可以正常使用了。
5.4 自动化配置
Spring Boot会根据引入的依赖提供一些默认配置,如需修改,只需在配置文件中修改对象配置即可。比如Spring MVC的Spring和Spring MVC的配置文件Spring Boot已经默认配置了一套,若需要加如Web应用程序的根目录,则只需在application.properties(Spring Boot的默认配置文件)中加入server.servlet.context-path=/test
5.5 提供开发者工具(福音)
Spring Boot 提供了开发者工具(spring-boot-devtools),实现测试代码时,无需手动重启项目,自动重启。
5.6 提供应用监控
Spring Boot 提供了spring-boot-starter-actuator来查看应用各项指标,比如health(健康检查)/dump(活动线程)/env(环境属性)/metrics(内存/CPU)等指标,还可以配合spring-boot-admin-starter-server监控项目。spring-boot-admin-starter-server通过spring-boot-actuator端点监控所有微服务应用的健康状态,若出现异常,就可以向维护人员发送邮件或以其它方式予以警告。除此之外,监控神器Prometheus也可以通过简单配置加入到Spring Boot应用中。
5.7 提供测试框架
Spring Boot项目会自动引入spring-boot-starter-test依赖,然后进行各种场景测试,满足测试需求。
5.8 提供jar部署
通过Maven或Gradle将Spring Boot项目打包成Jar文件,然后在具备环境的服务器或本地环境通过在cmd(Command Prompt 命令提示符窗口)java -jar xx.jar 执行Jar文件,实现应用快速运行。
5.9 支持多种IDE(Integrated Development Environment 集成开发环境)
Eclipse/IntelliJ IDEA/Spring Tool Suite(专门开发Spring系列)
6. 优点
6.1 简化工作
6.1.2 依赖简化:Spring Boot自带的starter集成了一切常用依赖
6.1.3 配置简化:提供默认配置,比如默认配置了spring和springMVC的配置文件、默认配置8080端口
6.1.4 部署简化:将Spring Boot项目打包成Jar包,然后在cmd执行java -jar xx.jar,运行jar文件,相比于传统的打包成war包并运行war包的部署,Spring Boot的jar部署,不需要安装Web容器,因为Spring Boot自带Web容器。
6.1.5 监控简化:通过引入Spring Boot的监控依赖,实现应用状态的快捷监控。
6.2 微服务
6.2.1 优势
1. 服务解耦:将单体应用拆分为多个服务,服务之间通过HTTP协议或其它约定好的协议进行网络通信
2. 技术选型灵活:各个服务的开发团队可以根据开发场景自由选择合适的开发技术,比如开发语言Java/PHP/Node.js and so on。
3. 服务并行开发:多个团分别负责开发不同模块服务,相互之间不受影响。
4. 单一职责:每个团队只需关注自身开发业务,无需熟悉其它开发业务。
5. 独立部署:每个服务开发完成后,可独立部署运行测试。
6. 敏捷开发:每个服务的业务迭代只需修改对应服务的功能即可。
7. 故障隔离:
6.2.2 劣势
1. 微服务部署,耗费精力。运维管理数量庞大的微服务,需要耗费更多精力。
2. 服务接口,维护困难。服务间通过接口相互调用,则一个接口改变格式或增减数据时,所有调用接口的服务都需要做出相应调整。
3. 高可用的需求。当一个服务或接口被多个服务调用时,需要这个服务或接口拥有很高的可用性。
4. 分布式事务。由于不同服务可能使用不同数据库,比如搜索服务使用Elasticsearch、基础服务(增删改查)使用MySQL、评论服务使用MongoDB,保证不同数据库数据的一致性将会比较困难。
5. 网络复杂性。由于各服务之间通过接口调用,因此系统间需要考虑很多网络延迟等客观因素来保证服务器之间的正常运转。
6. 测试复杂性。服务间的接口调用和测试需要一套整天的测试方案,所以自动化测试必不可少。
6.2.3 Spring社区背景强大
社区背景强大其实是Spring Boot如今盛行的原因。众所周知,Spring家族对于开发者提供了无尽的便利,而作为Spring的亲儿子“Spring Boot”则继承了一切Spring的优点,并且规避了很多Spring框架臃肿的缺点,而后续Spring家族的分布式框架Spring Cloud也是基于Spring Boot框架实现的框架,所以作为Spring的爱好者,或者将要学习Spring Cloud框架的开发者,Spring Boot是必须要学习的。
————————————————
版权声明:本文为CSDN博主「NagasakiAtomicBomb」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baidu_27414099/article/details/105425112