Springboot相关面试问题
Posted WK_BlogYard
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot相关面试问题相关的知识,希望对你有一定的参考价值。
1.什么是springboot?
多年来,随着新功能的增加,spring 变得越来越复杂。访问spring官网页面,我们就会看到可以在我们的应用程序中使用的所有 Spring 项目的不同功能。如果必须启动一个新的 Spring 项目,我们必须添加构建路径或添加 Maven 依赖关系,配置应用程序服务器,添加 spring 配置。因此,开始一个新的 spring 项目需要很多努力,因为我们现在必须从头开始做所有事情。
Spring Boot 是解决这个问题的方法。Spring Boot 已经建立在现有 spring 框架之上。使用 spring 启动,我们避免了之前我们必须做的所有样板代码和配置。因此,Spring Boot 可以帮助我们以最少的工作量,更加健壮地使用现有的 Spring功能。
简单来说,Springboot就是用来简化spring应用的初始搭建及开发过程,使用特定的方式来进行配置(properties或yml文件),使用约定大于配置的原则,去繁从简,通过嵌入Tomcat,无需部署war包,直接运行一个main方法就能创建一个独立的,产品级别的应用.
2.Springboot有哪些优点?
1)快速创建独立运行的spring项目与主流框架集成 ,减少开发前期的准备工作
2)大量的自动配置,简化开发,避免大量的 Maven 导入和各种版本冲突,也可修改默认值
3)使用嵌入式的servlet容器,应用无需打包成war包,不再需要自己去启动 Tomcat
4)使用properties或yml文件,配置简单清晰
3.如何重新加载Spring Boot上修改的文件,而无需重新启动服务器?
这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java 开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。
Dev工具的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
4.Springboot中的监视器是什么?
SpringBoot actuator 是 spring 启动框架中的重要功能之一。Spring boot 监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为 HTTP URL 访问的REST 端点来检查状态。
5.如何在Springboot中禁用监视器(Actuator)端点安全性?
默认情况下,所有敏感的 HTTP 端点都是安全的,只有具有 ACTUATOR 角色的用户才能访问它们。安全性是使用标准的 HttpServletRequest.isUserInRole 方法实施的。 我们可以使用来禁用安全性。只有在执行机构端点在防火墙后访问时,才建议禁用安全性。
6.如何使用Springboot实现分页和排序?
使用 Spring Boot 实现分页非常简单。使用 Spring Data-JPA 可以实现将可分页的传递给存储库方法。
7.如何使用Springboot实现异常处理?
Spring 提供了一种使用 ControllerAdvice 处理异常的非常有用的方法。 我们通过实现一个 ControlerAdvice 类,来处理控制器类抛出的所有异常。
8.Springboot常用的starter有哪些?
1)spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持
2)spring-boot-starter-data-jpa 数据库支持
3)spring-boot-starter-data-redis redis数据库支持
4)spring-boot-starter-data-solr solr支持
5)mybatis-spring-boot-starter 第三方的mybatis集成starter
9.Springboot自动配置的原理?
在spring程序main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration 会自动去maven中读取每个starter中的spring.factories文件 该文件里配置了所有需要被创建spring容器中的bean.
10.Springboot读取配置文件的方式?
springboot默认读取配置文件为application.properties或者是application.yml
11.Springboot集成mybatis的方式?
1)添加mybatis的starter maven依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter </artifactId> <version>1.2.0</version>
2)在mybatis的接口中 添加@Mapper注解
3)在application.yml/application.properties配置数据源信息
12.常见的starter会包含哪几个方面的内容?分别是什么?
常见的starter会包含如下四个方面的内容:
1)自动配置文件: 根据classpath判断是否存在指定的类来决定是否要执行该功能的自动配置。
2)spring.factories: 非常重要,指导Spring Boot找到指定的自动配置文件。
3)endpoint: 可以理解为一个admin,包含对服务的描述、界面、交互(业务信息的查询)。
4)health indicator: 该starter提供的服务的健康指标。
两个需要注意的点:
1)@ConditionalOnMissingBean的作用是:只有对应的bean在系统中都没有被创建,它修饰的初始化代码块才会执行,【用户自己手动创建的bean优先】.
2)Spring Boot Starter找到自动配置文件(xxxxAutoConfiguration之类的文件)的方式有两种:
spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置.
@EnableXxxxx:有时需要由starter的用户触发*查找自动配置文件的过程
13.Springboot Starter的工作原理?
Spring Boot Starter的工作原理如下:
1. Spring Boot 在启动时扫描项目所依赖的JAR包,寻找包含spring.factories文件的JAR.
2. 根据spring.factories配置加载AutoConfigure类
3. 根据 @Conditional注解的条件,进行自动配置并将Bean注入Spring Context
以上是关于Springboot相关面试问题的主要内容,如果未能解决你的问题,请参考以下文章
全栈编程系列SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题配置启动异常No SecurityManager...)(代码片段