没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
SpringBoot 常见的经典面试题
最近很多人面试时,简历上都说自己熟悉 Spring Boot, 或者说正
在学习 Spring Boot,一被面试官问道,都只停留在简单的使用阶
段,很多东西都不清楚,下面我整理了一些 springboot 比较常见
的面试题。
1、什么是 Spring Boot?
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一
站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重
xml 的配置,提供了各种启动器,在运行过程中自定配置, 开发者
能快速上手。
2、为什么要用 Spring Boot?
Spring Boot 优点非常多,如: 独立运行 简化配置 自动配置 无
代码生成和 XML 配置 无需部署 war 文件
3、Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
Spring Boot 的核心配置文件是 application 和 bootstrap 配置
文件。
application 配置文件这个容易理解,主要用于 Spring Boot 项目
的自动化配置。
bootstrap 配置文件有以下几个应用场景。
1. 使用 SpringCloudConfig 配置中心时,这时需要在 bootstrap 配置文件中添加连接
到配置中心的配置属性来加载外部配置中心的配置信息;
2. 一些固定的不能被覆盖的属性;
3. 一些加密/解密的场景;
4、Spring Boot 的配置文件有哪几种格式?它们有什么区别?
.properties 和 .yml,它们的区别主要是书写格式不同。
1).properties
app.user.name = javastack
复制
2).yml
app:
user:
name: javastack
复制
另外,.yml 格式不支持 @PropertySource 注解导入配置。
5、SpringBoot 的核心注解是哪个?它主要由哪几个注解组成的?
启动类上面的注解是@SpringBootApplication,它也是 Spring
Boot 的核心注解,主要组合包含了以下 3 个注解:
@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,
如关闭数据源自动配置功能: @SpringBootApplication(exclude =
{ DataSourceAutoConfiguration.class })。 @ComponentScan:Spring 组件扫描。
6、开启 SpringBoot 特性有哪几种方式?
1)继承 spring-boot-starter-parent 项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version></parent>
复制
2)导入 spring-boot-dependencies 项目依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency></dependencyManagement>
复制
This only works if your Maven project inherits (directly or
indirectly) from spring-boot-dependencies. If you have added
spring-boot-dependencies in your own dependencyManagement
section with import you have to redefine the artifact
yourself instead of overriding the property.
Spring Boot 依赖包里面的组件的版本都是和当前 Spring Boot 绑定的,如果要修改里面组
件的版本,只需要添加如下属性覆盖即可,但这种方式只对继承有效,导入的方式无效。
<properties>
<slf4j.version>1.7.25<slf4j.version></properties>
复制
如果导入的方式要实现版本的升级,达到上面的效果,这样也可以做到,把要升级的组件依
赖放到 Spring Boot 之前。
<dependencyManagement>
<dependencies>
<!-- Override Spring Data release train provided by Spring Boot -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Fowler-SR2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies></dependencyManagement>
复制
7、SpringBoot 需要独立的容器运行吗?
可以不需要,内置了 Tomcat/ Jetty 等容器。
8、运行 SpringBoot 有哪几种方式?
1)打包用命令或者放到容器中运行
2)用 Maven/ Gradle 插件运行
3)直接执行 main 方法运行
9、Spring Boot 自动配置原理是什么?
注解 @EnableAutoConfiguration, @Configuration,
@ConditionalOnClass 就是自动配置的核心,首先它得是一个配置
文件,其次根据类路径下是否有这个类去自动配置。
Spring Boot 的自动配置注解是@EnableAutoConfiguration, 从上面的@Import 的类可以
找到下面自动加载自动配置的映射。
org.springframework.core.io.support.SpringFactoriesLoader.loadFactoryNa
mes(Class<?>, ClassLoader)
复制
public static List<String> loadFactoryNames(Class<?> factoryClass,
ClassLoader classLoader) {
String factoryClassName = factoryClass.getName();
try {
Enumeration<URL> urls = (classLoader != null ?
classLoader.getResources(FACTORIES_RESOURCE_LOCATION) :
lassLoader.getSystemResources(FACTORIES_RESOURCE_LOCATION));
剩余15页未读,继续阅读
资源评论
pangjiaqian
- 粉丝: 34
- 资源: 174
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功