9.1 什么是SpringBoot?
SpringBoot是Spring开源组织下的子项目,是Spring组件一站式方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能够快速上手。
9.2 为什么使用SpringBoot?
SpringBoot的优点。
- 1.独立运行
SpringBoot内嵌了各种servlet容器,Tomcat,jetty等,现在不再需要打成war包部署到容器上,SpringBoot只要打成一个可执行的jar包就能独立运行,所有的依赖包都在一个jar包内。 - 2.简化配置
spring-boot-starter-web启动器自动依赖其他组件,减少了maven的配置。除此之外,还提供了各种启动器,开发者弄够快速上手。 - 3.自动配置
SpringBoot能根据当前类路径下的类、jar包来配置bean,如添加一个spring-boot-starter-web启动器就能拥有web的功能,无需其他配置 。 - 4.无代码生成和XML配置
SpringBoot过程中无代码生成,也无需XML配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,这也是Spring4.x的核心功能之一。 - 5.应用监控
SpringBoot提供一系列端点可以监控服务及应用,做健康监测。
9.3 SpringBoot有哪些缺点
SpringBoot虽然上手容易 ,但是如果不了解其核心技术及流程,遇到问题就会很棘手,而且现在的解决方案也不是很多,需要一个完整的过程。
9.4 SpringBoot的核心配置文件有哪几个?它们的区别是什么?
SpringBoot的核心配置文件是application和bootstrap配置文件。
application配置文件主要用于Spring Boot项目的自动化配置。
bootstrap配置文件的特性:
- bootstrap由父ApplicationContext加载,比application优先加载。
- bootstrap里面的属性不能被覆盖
bootstrap配置文件有以下几个应用场景: - 使用Spring Cloud Config配置中心时,这是需要在 bootstrap配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息。
- 一些固定的不能被覆盖的属性
- 一些加密/解密的场景
9.5 SpringBoot的配置文件有哪几种格式?他们有什么区别?
- (1).properties
app.user.name = javastack
- (2).yml
app:
user:
name: javastack
另外,.yml格式不支持@PropertySource注解导入配置
9.6 SpringBoot的核心注解是哪个?它是由哪几个注解组成的?
启动类上面的注解是@SpringBootApplication,它也是SpringBoot的核心注解,主要包含以下3个注解:
- @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能
- @EnableAutoConfiguration:打开了自动配置的功能,也可以关闭某个自动配置的选项,
–如关闭数据源自动配置功能:
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) - @ComponentScan:Spring组件扫描
9.7 开启SpringBoot特性有哪几种方式?
- (1)继承spring-boot-starter-parent项目
<parent>
<groupId>org.springframework</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.7.RELEASE</version>
</parent>
- (2)如果项目已经继承了其他父项目,则可以导入spring-boot-dependencies项目依赖。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-dependencies
</artifactId>
<version>
2.0.7.RELEASE
</version>
<type>
pom
</type>
<scope>
import
</scope>
</dependency>
</dependencies>
</dependencyManagement>
9.8 SpringBoot有哪几种运行方式?
- (1)打包命令或者放到容器中运行
- (2)用Maven/Gradle插件运行
- (3)直接执行main方法运行
9.9 SpringBoot自动配置原理是什么?
注解@EnableAutoConfiguration,@Configuration,@ConditionalOnClass就是自动配置的核心
首先它得是一个配置文件,其次根据类路径下是否有这个配置文件去自动配置。
@EnableAutoConfiguration是实现自动配置的注解
@Configuration表示这是这是一个配置文件
9.10 如何理解SpringBoot中的Starters?
- Starters可以理解为启动器,它包含了一系列可以集成在应用里面的依赖包,它可以一站式集成Spring及其他技术,而不需要到处找到示例代码和依赖包。如果你想使用Spring JPA访问数据库,只要加入spring-boot-starter-data-jpa启动器就能使用了。
- Starters包含了许多项目中需要用到的依赖,它们能快速持续地运行,都是一系列得到支持的管理传递性依赖。