原博客链接:
https://blog.youkuaiyun.com/zl1zl2zl3/article/details/83715633
1、什么是springboot?
springboot是spring 开源组织下的子项目,是spring 组件一站式解决方案,主要是简化了使用spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。
更多springboot详细介绍请看这篇文章《什么是springboot》.
2.为什么使用springboot?
springBoot优点非常多,如:
独立运行
简化配置
自动配置
无代码生成和Xml配置
应用监控
上手容易
。。。
springboot 集这么多优点于一身,还有理由不适用它呢?
3、springboot的核心配置文件有哪几个?它们的区别是什么?
springboot的核心配置文件是和 bootstrap 配置文件
application 配置文件这个容易理解,主要用于springboot项目的自动化配置
bootstrap 配置文件有以下几个应用场景
使用springcloud config 配置中心时,这时需要在bootstrap 配置文件中添加连接到配置中心得配置属性来加载外部配置中心得配置信息;
一些固定得不能被覆盖得属性;
一些加密/解密得场景;
具体请看这篇文章《springboot得核心配置文件详解》
4、springboot得配置文件有哪几种格式?它们有什么区别?
.properties app.user.name = javastack
.yml
app:
user:
name: javaStack
另外,.yml格式不支持@propertySource注解导入配置
5.springboot的核心注解是哪个?它主要是由哪几个注解组成的?
启动类上面的注解是@springbootApplication ,它也是springboot的核心注解,主要组合包含了一下三个注解:
@Springbootconfiguration:组合了@configuration注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:@springbootapplication(exclude ={DataSourceAutoConfiguration.class})
@componentScan:spring组件扫描。
6、开启springboot特性有哪几种方式?
i 继承了spring-boot-starter-parent 项目
ii 导入spring -boot- dependencies项目依赖
具体请参考这篇文章《springboot开启的两种方式》。
7、springboot需要独立的容器运行吗?
可以不需要,内置了Tomcat/Jetty等容器。
8、运行springboot有哪几种方式?
(1) 打包用命令或者放到容器中运行
(2)用maven/gradle插件运行
(3)直接执行main方法运行
9、spingboot自动配置原理是什么?
注解@EnableAutoConfiguration,@Configuration ,@ConditonalOnClass就是自动配置的核心,首先它得是一个配置文件,其次根据类路径下是否有这个类去自动配置.
具体看这篇文章《springboot 自动配置原理、实战》
10、spring'Boot得目录结构是怎样的?
这个目录结构是主流及推荐的做法,而在主入类上加上@springbootApplication注解来开启springBoot的各项能力,如自动配置、组件扫描等。具体看这篇文章《Spring Boot 主类及目录结构介绍》。
11、你如何理解springboot中的starters?
starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成spring及其技术,而不需要到处找示例代码和依赖包。如你想使用springJpa访问数据库,加入spring-boot-starters-data-jpa启动器依赖就能使用了。
starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。具体请看这篇文章《springbootstarter启动器》
12、如何在springBoot启动的时候运行一些特定的代码?
可以实现接口ApplicationRunner或者CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个run方法,具体请看这篇文章《springBootRunner启动器》
13、springboot有哪几种读取配置的方式?
springBoot 可以通过@PropertySource@Value@Environment@ConfigurationProperties来绑定变量,具体情况看文章《Springboot读取配置的几种方式》
14、springboot支持哪些日志框架?推荐和默认的日志框架是哪个?
SpringBoot支持javaUtilLogging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,springboot将使用Logback作为默认日志框架,具体请看这篇文章《SpringBoot日志集成》。
15、SpringBoot实现热部署有哪几种方式?
主要有两种方式:
spring Loaded
spring-boot-devtools
spring-boot-devtools使用方式可以参考这篇文章《Spring Boot实现热部署》
16、如何理解spiringBoot配置加载顺序?
在springboot里面,可以使用以下几种方式来加载配置.
(1) properties文件;
(2)YAML文件;
(3)系统环境变量;
(4)命令行参数;
等等.......................
具体请看这篇文章《Springboot配置加载顺序详解》。
17、Spring Boot 如何定义多套不同环境配置?
提供多套配置文件,如:
运行时指定具体的配置文件,具体请看这篇文章《Spring Boot Profiles 不同环境配置》。
18、Spring Boot 可以兼容老Spring 项目吗,如何做?
可以兼容,使用@ImportResource注解导入老Spring项目配置文件。
19、保护Spring Boot 应用有哪些方法?
在生产中使用https
使用Snyk检查你的依赖关系
升级到最新版本
启用CSRF保护
使用内容安全策略防止XSS攻击
。。。。。。。
。。
更多文章请看这篇文章《10种保护Spring Boot 应用的绝佳方法》。
20、Spring Boot 2.X 有什么新特性?与1.x有什么区别?
首先是配置发生了变更
以及jdk版本的升级
第三方类库的升级
响应式Spring编程支持
HTTP/2支持
配置属性绑定
更多改进与加强。。。。。。。
具体请看这篇文章《Spring Boot 2.X 新特性总结及迁移指南》。