Spring Boot 知识点及面试总结

Spring Boot 知识点及面试总结

0、什么是Spring Boot

Spring Boot 是 Spring 开源组织下的子项目,是Spring组件一站式的解决方案,主要是简化了使用Spring的难度,简化了繁重的配置,提供了各种启动器,开发者能快速上手

1、使用Spring Boot的优点以及核心功能有哪些

核心功能:

  1. springboot项目为独立运行的spring项目,可以通过打包命令行(java -jar xxx.jar)运行或直接运行main主函数
  2. 内嵌servlet容器(tomcat、jetty、undertow等容器)
  3. 提供了starter的pom文件配置,简化了maven的配置
  4. 自动配置spring容器中的bean,当不满足实际开发场景,可自动以bean的自动化配置
  5. 准生产的应用监控(基于: ssh , http , telnet 对服务器运行的项目进行监控.).

优点:

  1. 无需进行手动配置,简化配置,也无需通过代码生成来实现
  2. 能够独立运行
  3. 上手容易
  4. 内嵌servlet容器(tomcat、jetty、undertow等容器)
  5. 能够快速搭建项目

2、Spring Boot中的核心主函数作用及使用的注解

@SpringBootApplication
public class HelloWorldMainApplication{
    public static void main(String [] args){
        SpringApplication.run(HelloWorldMainApplication.class, args);
    }
}

主函数作用: 主要用于启动spring boot框架,用于加载servlet容器和诸多的默认组件

@SpringBootApplication // 来标注一个主程序类,说明它是一个spring Boot的应用

3、Spring Boot 的核心注解是哪个,主要有哪几个注解组成的

@SpringBootApplication 是 Spring Boot 的核心注解,主要组合包含了以下三个注解:

@SpringBootConfiguration: 组合了@Configuration注解,实现配置文件的功能

@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

@ComponentScan: Spring组件扫描

4、Spring Boot的配置文件的格式有几种,区别是什么

​ Spring boot 主要有两种配置格式,.properties 和 .yml,它们的主要区别就是书写格式不一样,另外,yaml文件不支持 @PropertySource 注解导入配置

5、Spring Boot 的核心配置文件有几个,它们的区别是什么

​ Spring Boot主要有两个核心配置文件application和bootstrap

application 主要是用于spring Boot项目的自动化配置

bootstrap 配置文件有以下几个应用场景

  • 使用Spring Cloud Config 配置中心时,此时需要在bootstrap配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
  • 一些固定不能被覆盖的属性
  • 一些加密/解密的场景

6、Spring Boot 读取配置信息有哪几种方式

​ Spring Boot 可以用过**@Vule、@ConfigurationProperties、@PropertySource、@Environment** 来绑定变量

7、@Vule获取值和 @ConfigurationProperties 获取值的区别

​ @Vule 获取值需要一个一个指定变量值,并且只支持SpEL 表达式

​ @ConfigurationProperties 获取值的方式是批量注入配置文件中的属性,支持松散绑定(松散语法)、支持JSR303 数据校验和复杂类型的封装,不支持SpEL表达式

8、Spring boot 外部配置加载顺序

​ 1、命令行参数 (所有的配置都可以在命令行进行配置)

java -jar xxx.jar --server.port=8089 --server.context-path=/test

​ 2、来自java:comp/env 的JDNI 属性

​ 3、java系统属性(system.getProperties())

​ 4、操作系统环境变量

​ 5、RandomValuePropertySource配置的random.* 属性值

​ …

9、Spring Boot 的自动配置原理是什么

注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 是自动配置的核心,首先它得是一个配置文件,其次根据类路径下是否有这个类去自动配置

10、如何查看哪些自动配置类是生效的

​ 可以通过启用 debug=true 属性;来让控制台打印自动配置报告

11、Spring Boot 支持哪些日志框架,默认使用的是哪个

​ Spring Boot 支持Java Util Logging,log4j2,log4j,logback 作为日志框架,spring boot 默认是使用的是logback 日志框架

12、如何让系统中所有的日志进行统一到slf4j

​ 1、将系统中其他日志框架先排除出去

​ 2、用中间包来替换原有的日志框架

​ 3、导入slf4j其他日志框架的实现

13、 Spring Boot 需要独立的容器运行吗

​ 可以不需要,内嵌了tomcat、jetty、undertow等servlet容器

14、你如何理解Spring Boot 中的 Starters

Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包, 如你想要使用Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。

Starters 包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。

15、如何在 Spring Boot 启动的时候运行发一些特定的代码

​ 可以实现接口 ApplicationRunner 或者 CommanLineRunner,这两个接口实现方式都一样,它们都只提供了一个run方法。

16、Spring Boot 可以兼容老Spring 项目吗,如何做

​ 可以兼容, 使用 @ImportResource 注解导入老 Spring 项目配置文件

17、Spring Boot 实现热部署有哪几种方式

​ 主要有两种方式:

​ Spring Loaded

​ Spring-boot-devtools

18、Spring Boot 2.x 有什么新特性?与1.x有什么区别

​ 配置变更

​ JDK版本升级

​ 第三方类库升级

​ 响应式 Spring 编程支持

​ HTTP/2 支持

​ 配置属性绑定

19、Spring Boot 如何定义多套不同环境配置

​ application.properties

​ application-dev.properties

​ application-test.properties

​ application-prod.properties

在运行时指定具体的配置文件

20、@Value("#{}") 与 @Value("${}") 的区别

@Value("#{}")

​ 表示Spel 表达式通常用来获取bean的属性,或者调用bean 的某个方法,还可以表示常量。

@Value("${}")

​ 可以用来获取配置文件中定义的属性值

21、运行Spring Boot 有哪几种方式

  1. 打包成Fat Jar, 直接使用 java -jar 运行。目前主流做法
  2. 在IDEA 或者 Eclipse 中,直接运行应用的 Spring Boot 启动类的 main 主函数来启动。适用于开发调试场景
  3. 如果是web项目,可以打包成 war 包,使用外部 Tomcat 或 jetty 等容器

22、Spring Boot中的监视器是什么

​ Spring Boot actuator是Spring启动框架中的重要功能之一。Spring Boot监视器可帮助你访问生成环境中正在运行的应用程序的当前状态。

​ 有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。

23、Spring Boot常用的 Starter 有哪些

​ spring-boot-starter-web:提供 Spring MVC + 内嵌的servlet容器

​ spring-boot-starter-data-jpa:提供Spring JPA + Hibernate

​ spring-boot-starter-data-redis:提供redis

​ mybatis-spring-boot-starter:提供Mybatis

24、Spring Boot、Spring MVC和Spring 有什么区别

​ Spring是一个“引擎”

​ Spring MVC是基于Spring的一个MVC框架

​ Spring Boot是基于Spring的一套快速开发整合包

学习尚硅谷视频整理的文档 Spring Boot 1 1 Spring Boot入门 4 1.1 简介 4 1.2 微服务(martin fowler发表了一篇文章) 5 1.3 环境约束 7 1.4 第一个Spring Boot项目(jar):HelloWorld 8 1.5 入门案例详解 11 1.5.1 POM文件 11 1.5.2 主程序类,主入口类 12 1.6 使用Spring Initializer向导快速创建Spring Boot 16 2 Spring Boot配置 18 2.1 配置文件 18 2.2 YML语法 19 2.3 YML配置文件值获取 21 2.4 properties配置文件乱码问题 24 2.5 @ConfigurationProperties与@Value的区别 25 2.6 配置@PropertySource、@ImportResource、@Bean 27 2.7 配置文件占位符 30 2.8 Profile多环境支持 31 2.9 配置文件的加载位置 33 2.10 外部配置加载顺序 36 2.11 自动配置原理 37 2.12 @Conditional派生注解 41 3 Spring Boot与日志 42 3.1 日志框架分类和选择 42 3.2 SLF4j使用 43 3.3 其他日志框架统一转换成slf4j+logback 44 3.4 Spring Boot日志使用 45 3.5 Spring Boot默认配置 47 3.6 指定日志文件和日志Profile功能 52 3.7 切换日志框架(不使用SLF4j+LogBack) 54 4 Spring Boot与Web开发 55 4.1 Web开发简介 55 4.2 静态资源映射规则 56 4.3 引入Thymeleaf 60 4.4 Thymeleaf语法 61 4.5 SpringMVC自动配置原理 67 4.6 SpringBoot扩展与全面接管 70 4.7 如何修改SpringBoot的默认配置 72 4.8 【实验】CRUD操作 73 4.8.1 默认访问首页 73 4.8.2 登录页面国际化 74 4.8.3 登录 80 4.8.4 拦截器进行登录检查 81 4.8.5 实验要求(没按要求做,不想改了!) 82 4.8.6 CRUD-员工列表 83 4.8.7 CRUD-员工修改 86 4.8.8 CRUD-员工添加 87 4.8.9 CRUD-员工删除 88 4.9 错误处理原理&错误页面定制 90 4.10 配置嵌入式Servlet容器(springboot 1.50版本) 97 4.10.1 如何定制和修改Servelt容器的相关配置 97 4.10.2 注册servlet三大组件【servlet,filter,listener】 98 4.10.3 替换为其他嵌入式容器 102 4.10.4 嵌入式servlet容器自动配置原理 103 4.10.5 嵌入式servlet容器启动原理 103 4.11 使用外置的Servlet容器 104 4.11.1 步骤 104 4.11.2 原理 107 5 Spring Boot与Docker(虚拟化容器技术) 110 5.1 简介 110 5.2 核心概念 111 5.3 安装Docker 112 5.4 Docker常用命令&操作 113 5.5 安装MySQL示例 114 6 Spring Boot与数据访问 115 6.1 JDBC 115 6.1.1 实现 115 6.1.2 自动配置原理 116 6.2 整合Durid数据源 117 6.3 整合Mybatis 122 6.3.1 注解版 123 6.3.2 配置文件版 124 6.4 整合SpringData JPA 125 6.4.1 SpringData简介 125 6.4.2 整合 126 7 Spring Boot启动配置原理 128 7.1 启动流程(Springboot 1.50版本) 128 7.1.1 创建SpringApplication对象 129 7.1.2 运行run方法 130 7.1.3 编写事件监听机制 132 8 Spring Boot自定义starters 136 8.1 概述 136 8.2 步骤 137 9 更多Springboot整合示例 144 10 Spring Boot与缓存 145 10.1 JSR107缓存规范 145 10.2 Spring的缓存抽象 146 10.2.1 基本概念 146 10.2.2 整合项目 146 10.2.3 CacheEnable注解 148 10.2.4 Cache注解 150 10.3 整合redis 154 10.3.1 在Docker上安装redis 154 10.3.2 Redis的Template 154 10.3.3 整合(百度) 155
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值