spring boot 面试题整理

1、什么是springboot?

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

 

2、Spring Boot有哪些优点? 

1.快速创建独立运行的spring项目与主流框架集成 
2.使用嵌入式的servlet容器,应用无需打包成war包 
3.starters自动依赖与版本控制 
4.大量的自动配置,简化开发,也可修改默认值 
5.准生产环境的运行应用监控 
6.与云计算的天然集成

 

3、如何重新加载Spring Boot上的更改,而无需重新启动服务器? 

这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。 
Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。 开发人员可以重新加载Spring Boot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot在发布它的第一个版本时没有这个功能。 这是开发人员最需要的功能。DevTools模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供H2数据库控制台以更好地测试应用程序。 

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
	<!--optional=true 依赖不会传递,该项目依赖devtools之后依赖该项目的项目如果想要使用devtools,需要重新导入-->
	<optional>true</optional>
</dependency>

 
4、Spring Boot中的监视器是什么? 

Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。 有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。

 

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

Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。
application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。
bootstrap 配置文件有以下几个应用场景。
使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息; 一些固定的不能被覆盖的属性;一些加密/解密的场景

 

6、Spring Boot 的配置文件有哪几种格式?它们有什么区别?

.properties 和 .yml,它们的区别主要是书写格式不同。

 

7、springboot读取配置文件的方式?

springboot默认读取配置文件为application.properties或者是application.yml

 

8、什么是YAML? 

YAML是一种人类可读的数据序列化语言。它通常用于配置文件。 与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。

 

9、springboot自动配置的原理?

1.SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration。
2.@EnableAutoConfiguration的作用是利用AutoConfigurationImportSelector给容器中导入一些组件。
3.可以查看public String[] selectImports(AnnotationMetadata annotationMetadata)方法的内容。
4.通过protected List<String> getCandidateConfigurations(AnnotationMetadata metadata,AnnotationAttributes attributes)获取候选的配置,这个是扫描所有jar包类路径下"META-INF/spring.factories";
5.然后把扫描到的这些文件包装成Properties对象。
6.从properties中获取到EnableAutoConfiguration.class类名对应的值,然后把他们添加在容器中。
7.整个过程就是将类路径下"META-INF/spring.factories"里面配置的所有EnableAutoConfiguration的值加入到容器中。
8.每一个这样XXAutoConfiguration类都是容器中的一个组件都加入到容器中,用他们来做自动配置。每一个自动配置类进行自动配置功能,以HttpEncodingAutoConfiguration为例解释自动配置原理。
9.根据当前不同的条件判断,决定这个配置是否生效。

 

10、springboot集成mybatis的过程?

1.添加mybatis的starter maven依赖 

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.2.0</version>
</dependency>

2.在mybatis的接口中 添加@Mapper注解 
3.在application.yml配置数据源信息

 

11、Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:

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

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

@ComponentScan:Spring组件扫描。

 

12、开启 Spring Boot 特性有哪几种方式?

1.继承spring-boot-starter-parent项目

2.导入spring-boot-dependencies项目依赖

 

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

可以不需要,内置了 Tomcat/ Jetty 等容器。

 

14、运行 Spring Boot 有哪几种方式?

1.打包用命令或者放到容器中运行

2.用 Maven/ Gradle 插件运行

3.直接执行 main 方法运行

 

15、你如何理解 Spring Boot 中的 Starters?

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

 

16、Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?

Spring Boot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用 Starters 启动器,Spring Boot 将使用 Logback 作为默认日志框架.

 

17、SpringBoot 实现热部署有哪几种方式?

主要有两种方式:

1.Spring Loaded

2.Spring-boot-devtools  

 

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

1.配置变更
2.JDK 版本升级
3.第三方类库升级
4.响应式 Spring 编程支持
5.HTTP/2 支持
6.配置属性绑定
7.更多改进与加强… 

相关文献:https://zhuanlan.zhihu.com/p/63596771

 

19 、如何使用Spring Boot实现分页和排序?

使用Spring Boot实现分页非常简单。使用Spring Data-JPA可以实现将可分页的org.springframework.data.domain.Pageable传递给存储库方法。

 

20、如何实现Spring Boot应用程序的安全性?

为了实现Spring Boot的安全性,我们使用 spring-boot-starter-security依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter并覆盖其方法。

参考链接:https://blog.csdn.net/Roger_CoderLife/article/details/106856089

 

21、如何集成Spring Boot和ActiveMQ?

对于集成Spring Boot和ActiveMQ,我们使用spring-boot-starter-activemq 依赖关系。 它只需要很少的配置,并且不需要样板代码。

 

22、什么是Swagger?你用Spring Boot实现了它吗?

Swagger广泛用于可视化API,使用Swagger UI为前端开发人员提供在线沙箱。Swagger是用于生成RESTful Web服务的可视化表示的工具,规范和完整框架实现。它使文档能够以与服务器相同的速度更新。当通过Swagger正确定义时,消费者可以使用最少量的实现逻辑来理解远程服务并与其进行交互。因此,Swagger消除了调用服务时的猜测。

 

23、如何使用Spring Boot实现异常处理?

Spring提供了一种使用ControllerAdvice处理异常的非常有用的方法。 我们通过实现一个ControlerAdvice类,来处理控制器类抛出的所有异常。

 

24、RequestMapping 和 GetMapping 的不同之处在哪里?

RequestMapping 具有类属性的,可以进行 GET,POST,PUT 或者其它的注释中具有的请求方法。
GetMapping 是 GET 请求方法中的一个特例。它只是 ResquestMapping 的一个延伸,目的是为了提高清晰度。

 

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

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

 

26、保护 Spring Boot 应用有哪些方法?

在生产中使用HTTPS 使用Snyk检查你的依赖关系 升级到最新版本 启用CSRF保护 使用内容安全策略防止XSS攻击

 

相关文献:

1.spring boot 面试题详解

2.20 道 Spring Boot 面试题你需要了解下 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值