Spring Boot 简介
概念:Spring Boot 是一个轻量级框架,可以完成基于 Spring 的应用程序的大部分配置工作;Spring Boot 的目的是提供一组工具,以便快速构建容易配置的 Spring 应用程序。
特性:
- 独立运行的Spring项目:Spring Boot 使您能轻松地创建独立的、生产级的、基于 Spring 且能直接运行的应用程序。我们对 Spring 平台和第三方库有不好的看法,所以我们可以从一开始只会遇到极少的麻烦。
- 内嵌Servlet容器:Spring Boot可以内嵌Tomcat,这样我们无需以war包的形式部署项目。
- 提供starter简化Maven配置:使用Spring或者SpringMVC我们需要添加大量的依赖,而这些依赖很多都是固定的,这里Spring Boot 通过starter能够帮助我们简化Maven配置。
- 自动配置Spring:SpringBoot的自动配置特性利用了Spring4对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们;
- 准生产的应用监控
- 无代码生成和xml配置
如何理解:
- 基本上讲,意味着如果使用Spring Boot 则我们只需要进行极少的配置,就可以快速获得一个正常运行的 Spring 应用程序。这些极少的配置采用了注释注解的形式,所以没有 XML。
- Spring Boot 具有自启动功能,换句话说,Spring Boot 拥有合理的默认值,所以您可以使用这些常用值快速构建应用程序。例如,Tomcat 是一个非常流行的 Web 容器。默认情况下,Spring Boot Web 应用程序使用了一个嵌入式 Tomcat 容器,我们可以直接运行Spring Boot 而不需要将其进行发布。
- Spring Boot 配置具有灵活可升缩性,如果无法改变其配置,具有完全运行功能的框架就不是很好的框架。您可以根据自己的喜好轻松地自定义 Spring Boot 应用程序,无论是在进行初始配置时还是在开发周期的后期阶段。例如,如果喜欢 Maven,可以轻松地在 POM 文件中更改 <dependency> 来替换 Spring Boot 默认值
- Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适)。
- Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架采用“习惯优于配置”的方式开发,可以快速构建Spring应用。
Spring Boot 历史及由来
问题驱动一:如果您编写过基于 Spring 的应用程序,就会知道只是完成 “Hello, World” 就需要大量配置工作。这不是一件坏事:Spring 是一个优雅的框架集合,需要小心协调配置才能正确工作。但这种优雅的代价是配置变得很复杂(别跟我提 XML)。
历史:
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》。Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。但是Spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合性等方面从Spring中获益。
Spring Boot 简化了基于Spring的应用开发,只需要“run”就能创建一个独立的、生产级别的Spring应用。Spring Boot为Spring平台及第三方库提供开箱即用的设置(提供默认设置),这样我们就可以简单的开始。多数Spring Boot应用只需要很少的Spring配置。我们可以使用SpringBoot创建java应用,并使用java –jar 启动它,或者采用传统的war部署方式。
目标:
- 为所有 Spring 的开发提供一个从根本上更快的入门体验
- 开箱即用,但通过自己设置参数,即可快速摆脱这种方式。
- 提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标,健康检测、外部化配置等
- 绝对没有代码生成,也无需 XML 配置。
Spring Boot 最新版
Spring Boot 2.2.7 发布了,可从 repo.spring.io 和 Maven Central 获取。此版本包括 80 项错误修复、增强功能、文档改进和依赖项升级等。
新特性
- 如果 spring.config.location 使用 classpath* 则抛出异常
- 弃用 PushRegistryConfig#numThreads
Bug 修复
- 类路径通配符无法与 Java 11 或更高版本一起使用
- 当请求处于活动状态时,Undertow 阻止 JVM 退出
- JarFiles 处于打开状态
- 服务器地址错误时会抛出 PortInUseException
- JDK11 和 Security Manager 的类加载问题
- 当 Netty 无权使用已配置的端口时抛出 PortInUseException
- ……
更多内容见更新说明:https://github.com/spring-projects/spring-boot/releases/tag/v2.2.7.RELEASE