Spring Boot 是 Spring 开源组织下的子项目, 是 Spring 组件一站式解决方案, 主要是 简化了使用 Spring 的难度, 简省了繁重的配置, 提供了各种启动器, 开发者能快速上手 。
Spring Boot 的优点
● 独立运行
Spring Boot 而且内嵌了各种 servlet 容器, Tomcat 、Jetty 等, 现在不再需要打成 war 包部署到容器中, Spring Boot 只要打成一个可执行的 jar 包就能独立运行, 所有的依 赖包都在一个 jar 包内。
● 简化配置
spring-boot-starter-web 启动器自动依赖其他组件, 简少了 maven 的配置 。除此之 外, 还提供了各种启动器, 开发者能快速上手。
● 自动配置
Spring Boot 能根据当前类路径下的类 、jar 包来自动配置 bean, 如添加一个 spring- boot-starter-web 启动器就能拥有 web 的功能, 无需其他配置 。
● 无代码生成和 XML 配置
Spring Boot 配置过程中无代码生成, 也无需 XML 配置文件就能完成所有配置工作, 这一切都是借助于条件注解完成的, 这也是 Spring4.x 的核心功能之一 。
● 应用监控
Spring Boot 提供一系列端点可以监控服务及应用, 做健康检测 。
Spring Boot 缺点:
Spring Boot 虽然上手很容易, 但如果你不了解其核心技术及流程, 所以一旦遇到问题 就很棘手, 而且现在的解决方案也不是很多, 需要一个完善的过程。
启动类上面的注解是@SpringBootApplication, 它也是 Spring Boot 的核心注解, 主要 组合包含了以下 3 个注解:
● @SpringBootConfiguration: 组合了 @Configuration 注解, 实现配置文件的功 能 。
● @EnableAutoConfiguration: 打开自动配置的功能, 也可以关闭某个自动配置 的选项,
● 如关闭数据源自动配置功能: @SpringBootApplication(exclude =
{ DataSourceAutoConfiguration.class })。
● @ComponentScan: Spring 组件扫描 。
注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自动配置的核心。
首先它得是一个配置文件, 其次根据类路径下是否有这个类去自动配置 。
@EnableAutoConfiguration 是实现自动配置的注解;
@Configuration 表示这是一个配置文件;
Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件 。 application 配置文件这个容易理解, 主要用于 Spring Boot 项目的自动化配置。
bootstrap 配置文件的特性:
● bootstrap 由父 ApplicationContext 加载, 比 applicaton 优先加载
● bootstrap 里面的属性不能被覆盖
bootstrap 配置文件有以下几个应用场景:
● 使用 Spring Cloud Config 配置中心时, 这时需要在 bootstrap 配置文件中添加 连接到配置中心的配置属性来加载外部配置中心的配置信息;
● 一些固定的不能被覆盖的属性;
● 一些加密/解密的场景;
提供多套配置文件, 如:
applcation.properties
application-dev.properties
application-test.properties
application-prod.properties
运行时指定具体的配置文件 。
SpringBoot 和 SpringCloud 是什么关系
Spring Boot 是 Spring 的一套快速配置脚手架, 可以基于 Spring Boot 快速开发单个 微服务, Spring Cloud 是一个基于 Spring Boot 实现的开发工具; Spring Boot 专注于 快速 、方便集成的单个微服务个体, Spring Cloud 关注全局的服务治理框架; Spring Boot 使用了默认大于配置的理念, 很多集成方案已经帮你选择好了, 能不配置就不配 置, Spring Cloud 很大的一部分是基于 Spring Boot 来实现, 必须基于 Spring Boot 开 发 。
可以单独使用 Spring Boot 开发项目, 但是 Spring Cloud 离不开 Spring Boot。