目录
说明
了解SpringBoot之前,我们先要去了解一下单体应用架构和微服务架构之间的区别,可以去看我的另一篇文章:单体应用架构和微服务应用架构
那么我们现在进入正题
一、为什么我们要用SpringBoot
这肯定是说我们SpringBoot的优点了,让我们一起看看
- 为所有Spring开发者更快的入门
- 独立运行
SpringBoot框架内嵌了各种Servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器中,SpringBoot只要打成一个可执行的jar包就能独立运行,所有的依赖包都在一个jar包内。 - 简化Maven配置
spring-boot-starter-web启动器自动依赖其他组件,减少了maven的配置。 - 自动配置
SpringBoot能自动配置bean,如添加一个spring-boot-starter-web启动器就能拥有web功能,无需其他配置。 - 配置过程无代码生成和XML配置
SpringBoot配置过程中无代码生成,也无需XML配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,这也是Spring4.x的核心功能之一。 - 应用监控
SpringBoot提供了一系列端点可以监控服务和应用,可以做健康检测。
二、如何理解SpringBoot中的starter
- 在SpringBoot中,我们常说的starter是什么呢?
Starter可以理解为启动器,Starter里面包含了一系列可以集成到微服务应用里面的依赖包,我们可以一站式集成Spring及其他技术,而不需要到处去找示例代码和依赖包。如果我们想使用Spring JPA访问数据库,只要加入spring-boot-starter-data-jpa启动器就能使用了。Starters包含了许多项目中需要用到的依赖,它们能快速的运行,而这些依赖都是得到支持的管理传递性依赖。
- 在SpringBoot中,Starters的命名有什么规则?
SpringBoot官方的启动器都是以spring-boot-starter-xxx 命名的,代表了一个特定的应用类型。
而Spring官网规定第三方启动器不能以spring-boot开头命名,像mybatis的启动器是按照mybatis-spring-boot-starter命名的。
- Starters分类?
- SpringBoot应用类启动器
启动器名称 | 功能描述 |
---|---|
spring-boot-starter | 包含自动配置、日志、yam的支持 |
spring-boot-starter-web | 使用SpringMVC构建Web工程,包含restful,默认使用Tomcat容器 |
- SpringBoot生产启动器
启动器名称 | 功能描述 |
---|---|
spring-boot-starter-actuator | 提供生产环境特性,能监控管理应用 |
- SpringBoot技术类启动器
spring-boot-starter-json | 提供对JSON的读写支持 |
---|---|
spring-boot-starter-logging | 默认的日志启动器,默认使用Logback |
- 还有其他第三方启动器
- SpringBoot常用的starter有哪些?
- spring-boot-starter-web:使用SpringMVC构建Web工程,包含restful,默认使用Tomcat容器和Web开发需要的servlet与Jsp的支持。
- spring-boot-starter-data-jpa:对数据库的支持。
- spring-boot-starter-data-redis:对redis分布式数据库的支持。
- spring-boot-starter-data-solr:对solr的支持。
- mybatis-spring-boot-starter:第三方mybatis集成starter。
三、SpringBoot的核心注解
Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
@SpringBootApplication是SpirngBoot的核心注解,它主要用在主启动类上面,@SpringBootApplication主要由以下三个注解组成。
- @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能。
- @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})。
- @ComponentScan:组件扫描。
四、如何SpringBoot启动的时候运行一些特定的代码
如果你想在SpringBoot启动的时候运行一些特定的代码,你可以实现
- 接口ApplicationRunner
- 接口ConmmandLineRunner
这两个接口实现方式一样,他们都只提供了一个run方法。
五、运行SpringBoot有哪几种方式?
- 打包之后用命令启动或者放在容器中运行
- 用Maven或者Gradle插件运行
- 直接执行main方法运行
六、SpringBoot需要独立的容器运行吗?
可以不需要放入容器中运行,因为SpringBoot内置了Tomcat或者Jetty等容器。
七、SpringBoot 热部署
SpringBoot 实现热部署有哪几种方式呢?
主要有以下两种方式
- SpringLoaded
- spring-boot-devtools
八、SpringBoot 的核心配置文件
Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
SpringBoot的核心配置文件是application和bootstrap配置文件。
-
application 配置文件这个容易理解,主要用于Spring Boot项目的自动化配置。
-
bootStrap 配置文件有以下几个应用场景
-
使用SpringCloud Config 配置中心时,这时需要在bootstrap配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息
-
用于一些固定的不能被覆盖的属性
-
还可以用于一些加密和解密的场景
九、SpirngBoot 配置文件的加载顺序
如何理解 Spring Boot 配置文件的加载顺序?
在 Spring Boot 里面,可以使用以下几种方式来加载配置。
-
properties文件
-
yaml文件
-
系统环境变量
-
命令行参数
十、SpringBoot的全局异常处理
Spring 提供了一种使用ControllerAdvice处理异常的非常有用的方法。我们通过实现一个ControllerAdvice类,来处理控制器类抛出的所有异常。