转载自
自己从网上整理的关于SpringBoot的面试题
文章目录
- 1.SpringBoot是什么?
- 2.为什么使用SpringBoot(优点)?
- 3.SpringBoot的核心配置文件有哪几个?他们的区别是什么?
- 4.SpringBoot的配置文件有哪几种格式?区别?
- 5.SpringBoot的核心注解是哪个?
- 6.开启SpringBoot特性有哪几种方式?
- 7.SpringBoot需要独立的容器运行吗?
- 8.运行SpringBoot有哪几种方式?
- 9.SpringBoot自动配置原理是什么?
- 10.SpringBoot的目录结构是怎么样的?
- 11.你如何理解SpringBoot中的Starters?
- 12.如何在SpringBoot启动的时候运行一些特定的代码?
- 13.SpringBoot有哪几种读取配置的方法?
- 14.SpringBoot支持哪些日志架构?推荐和默认的日志架构是哪个?
- 15.SpringBoot实现热部署有哪几种方式?
- 16.SpringBoot配置加载顺序?
- 17.SpringBoot如何定义多套不同环境配置?
- 18.SpringBoot可以兼容老Spring项目吗?
- 19.保护SpringBoot应用有哪些方法?
- 20.SpringBoot2.X有什么新特新?与1.X的区别?
1.SpringBoot是什么?
SpringBoot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。
2.为什么使用SpringBoot(优点)?
- 独立运行
- 简化配置
- 自动配置
- 无代码生成和XML配置
- 应用监控
- 上手容易
- …
从两方面来说,一方面:这个框架自身的优点(独立,减少配置),另一方面:使用者角度(上手)
3.SpringBoot的核心配置文件有哪几个?他们的区别是什么?
application和bootstrap
application主要用于SpringBoot项目的自动化配置。
bootstrap配置文件应用场景:
- 使用Spring Cloud Config配置中心时,这时需要在bootstrap配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
- 一些固定的不能被覆盖的属性;
- 一些加密/解密的场景;
4.SpringBoot的配置文件有哪几种格式?区别?
.properties和.yml,区别:书写格式
1) .properties
app.user.anme = navastack
- .yml
app:
user:
name:javastack
*另外,.yml格式不支持@PropertySource注解导入配置
5.SpringBoot的核心注解是哪个?
启动类上面的注解是@SpringBootApplication,它也是SpringBoot的核心注解,主要组合包含以下3个注解:
@SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能;
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class}).
@ComponentScan:Spring组件扫描
6.开启SpringBoot特性有哪几种方式?
- 继承spring-boot-starter-parent项目
- 导入spring-boot-dependencies项目依赖
7.SpringBoot需要独立的容器运行吗?
可以不需要,内置了Tomcat/Jetty等容器
8.运行SpringBoot有哪几种方式?
- 打包用命令或者放到容器中运行
- 用Maven/Gradle插件运行
- 直接执行main方法运行
9.SpringBoot自动配置原理是什么?
注解** @EnalbeAutoConfiguration,@Configuration,@ConditionOnClass**就是自动配置的核心,首先它得有一个配置文件,其次根据类路径下是否有这个类去自动配置
10.SpringBoot的目录结构是怎么样的?
cn
+- javastack
+- MyApplication.java
|
+- customer
| +- Customer.java
| +- CustomerController.java
| +- CustomerService.java
| +- CustomerRepository.java
|
+- order
+- Order.java
+- OrderController.java
+- OrderService.java
+- OrderRepository.java
这个目录结构是主流及推荐的做法,而在主入口类上面加** @SpringBootApplication**注解开启SpringBoot的各项能力,如自动配置,组件扫描等。目录结构
11.你如何理解SpringBoot中的Starters?
Starters 启动器,包含了一系列可以结成到应用里面的依赖包,一站式继承Spring及其他技术。如你想使用Spring JPA访问数据库,只要加入spring-boot-starter-data-jpa启动器依赖就能使用了。
12.如何在SpringBoot启动的时候运行一些特定的代码?
可以实现接口ApplicationRunner或者CommandLineRunner,这两个接口实现方式一样,都提供run方法。
13.SpringBoot有哪几种读取配置的方法?
@PropertySource
@Value
@Environment
@ConfiguratoinProperties
14.SpringBoot支持哪些日志架构?推荐和默认的日志架构是哪个?
支持** Java Util Logging , Log4j2,Lockback**作为日志框架,如果使用Starters启动器,SpringBoot默认使用Logback
15.SpringBoot实现热部署有哪几种方式?
- Spring Loaded
- Spring-boot-devtools
16.SpringBoot配置加载顺序?
- properties文件
- YAML文件
- 系统环境变量
- 命令行参数
17.SpringBoot如何定义多套不同环境配置?
applcation.properties
application-dev.properties
application-test.properties
application-prod.properties
18.SpringBoot可以兼容老Spring项目吗?
可以兼容,使用@ImportResource注解导入老Spring项目配置文件
19.保护SpringBoot应用有哪些方法?
- 在生产中使用HTTPS
- 使用Snyk检查你的依赖关系
- 升级到最新版本
- 启用CSRF保护
- 使用内容安全策略放置XSS攻击
- 。。。。。
20.SpringBoot2.X有什么新特新?与1.X的区别?
- 配置变更
- JDK版本升级
- 第三方类库升级
- 响应式Spring编程支持
- HTTP/2支持
- 配置属性绑定
- 。。。。
更多推荐
SpringBoot面试题整理
发布评论