2020最新整理版SpringBoot⾯试题
1、什么是 Spring Boot?
SpringBoot 是 Spring 开源组织下的⼦项⽬,是 Spring 组件⼀站式解决⽅案,主要是简化了使⽤ Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上⼿。
2、为什么要⽤ Spring Boot?
Spring Boot 优点⾮常多,如:
独⽴运⾏
Spring Boot⽽且内嵌了各种servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器中,Spring Boot只要打成⼀个可执⾏的jar 包就能独⽴运⾏,所有的依赖包都在⼀个jar包内。
简化配置
spring-boot-starter-web启动器⾃动依赖其他组件,简少了maven的配置。
⾃动配置
Spring Boot能根据当前类路径下的类、jar包来⾃动配置bean,如添加⼀个spring-boot-starter-web启动器就能拥有web的功能,⽆需其他配置。
⽆代码⽣成和XML配置
Spring Boot配置过程中⽆代码⽣成,也⽆需XML配置⽂件就能完成所有配置⼯作,这⼀切都是借助于条件注解完成的,这也是Spring4.x的核⼼功能之⼀。
应⽤监控
Spring Boot提供⼀系列端点可以监控服务及应⽤,做健康检测、注解配置监测。
3、Spring Boot 的核⼼配置⽂件有哪⼏个?它们的区别是什么?
Spring Boot 中有以下两种配置⽂件:
bootstrap (.yml 或者 .properties)
application (.yml 或者 .properties)
因此,对⽐ application 配置⽂件,bootstrap 配置⽂件具有以下⼏个特性:
boostrap 由⽗ ApplicationContext 加载,⽐ applicaton 优先加载。
boostrap ⾥⾯的属性不能被覆盖。
java面试题及答案2020bootstrap/ application 的应⽤场景:
application 配置⽂件这个容易理解,主要⽤于 Spring Boot 项⽬的⾃动化配置。
bootstrap 配置⽂件有以下⼏个应⽤场景:
使⽤ Spring Cloud Config 配置中⼼时,这时需要在 bootstrap 配置⽂件中添加连接到配置中⼼的配置属性来加载外部配置中⼼的配置信息;⼀些固定的不能被覆盖的属性;
⼀些加密/解密的场景。
4、Spring Boot 的配置⽂件有哪⼏种格式?它们有什么区别?
.properties 和 .yml,它们的区别主要是书写格式不同 如下:
1).properties
app.user.name=javastack
2).yml
app:user:name:javastack
注意: .yml 格式不⽀持 @PropertySource 注解导⼊配置
注意
5、Spring Boot 的核⼼注解是哪个?它主要由哪⼏个注解组成的?
启动类上⾯的注解是@SpringBootApplication,它也是 Spring Boot 的核⼼注解,主要组合包含了以下 3 个注解:
**@SpringBootConfiguration:**组合了 @Configuration 注解,实现配置⽂件的功能。
**@EnableAutoConfiguration:**打开⾃动配置的功能,也可以关闭某个⾃动配置的选项,如关闭数据源⾃动配置功能:
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan: Spring组件扫描。
6、开启 Spring Boot 特性有哪⼏种⽅式?
有以下两种⽅式:
继承spring-boot-starter-parent项⽬
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version></parent>
导⼊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> <dependencies></dependencyManagement>
1. 属性覆盖只对继承有效
Spring Boot依赖包⾥⾯的组件的版本都是和当前Spring Boot绑定的,如果要修改⾥⾯组件的版本,只需要添加如下属性覆盖即可,但这种⽅式
只对继承有效,导⼊的⽅式⽆效
<properties> <slf4j.version>1.7.25<slf4j.version></properties>
需要注意,要修改Spring Boot的依赖组件版本可能会造成不兼容的问题。
7、Spring Boot 需要独⽴的容器运⾏吗?
可以不需要,内置了 Tomcat/Jetty 等容器。
8、运⾏ Spring Boot 有哪⼏种⽅式?
1)打包⽤命令或者放到容器中运⾏
2)⽤ Maven/Gradle 插件运⾏
3)直接执⾏ main ⽅法运⾏
9、Spring Boot ⾃动配置原理是什么?
Spring Boot的⾃动配置注解是@EnableAutoConfiguration, 从上⾯的@Import的类可以到下⾯⾃动加载⾃动配置的映射
io.support.SpringFactoriesLoader.loadFactoryNames(Class<?>,ClassLoader)
代码如下:
public static List<String> loadFactoryNames(Class<?> factoryClass,ClassLoader classLoader){
String factoryClassName = Name();
try{
Enumeration<URL> urls = (classLoader!=null?
List<String> result = new ArrayList<String>();
while(urls.hasMoreElements()){
URL url = Element();
Properties properties = PropertiesLoaderUtils.loadProperties(new UrlResource(url));
String factoryClassNames = Property(factoryClassName);
result.addAll(Arrays.asList(StringUtilsmaDelimitedListToStringArray(factoryClassNames)));
}
return result;
}catch(IOException ex){
throw new IllegalArgumentException("Unable to load ["+Name()+"] factories from location
["+FACTORIES_RESOURCE_LOCATION+"]",ex);
}
}
11、你如何理解 Spring Boot 中的 Starters?
Starters是什么:
Starters可以理解为启动器,它包含了⼀系列可以集成到应⽤⾥⾯的依赖包,你可以⼀站式集成Spring及其他技术,⽽不需要到处⽰例代码和依赖包。如你想使⽤Spring JPA访问数据库,只要加⼊spring-boot-starter-data-jpa启动器依赖就能使⽤了。Starters包含了许多项⽬中需要⽤到的依赖,它们能快速持续的运⾏,都是⼀系列得到⽀持的管理传递性依赖。
Starters命名:
Spring Boot官⽅的启动器都是以spring-boot-starter-命名的,代表了⼀个特定的应⽤类型。第三⽅的启动器不能以spring-boot开头命名,它们都被Spring Boot官⽅保留。⼀般⼀个第三⽅的应该这样命名,像mybatis的mybatis-spring-boot-starter。
Starters分类:
Spring Boot应⽤类启动器
12、如何在 Spring Boot 启动的时候运⾏⼀些特定的代码?
CommandLineRunner ,这两个接如果你想在Spring Boot启动的时候运⾏⼀些特定的代码,你可以实现接⼝ ApplicationRunner
ApplicationRunner 或者 CommandLineRunner
⼝实现⽅式⼀样,它们都只提供了⼀个run⽅法。
CommandLineRunner: 启动获取命令⾏参数
CommandLineRunner:
ApplicationRunner: 启动获取应⽤启动的时候参数
ApplicationRunner:
使⽤⽅式:
或者这样
启动顺序:
如果启动的时候有多个ApplicationRunner和CommandLineRunner,想控制它们的启动顺序,可以实现Ordered接⼝或者使⽤ annotation.Order注解13、
Spring Boot 有哪⼏种读取配置的⽅式?
读取application⽂件:
在l或者properties⽂件中添加:
info.address=USA
infopany=Spring
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论