SpringBoot核心原理以及SpringBoot面试题

1.什么是springboot?

它是一个服务于spring框架的框架,能够简化配置文件,快速构建web应用,
内置tomcat,无需打包部署,直接运行。

2.约定优于配置指的是什么?

maven 的目录结构
a) 默认有 resources 文件夹存放配置文件
b) 默认打包方式为 jar
spring-boot-starter-web 中默认包含 spring mvc 相关依赖以及内置的 tomcat 容器,使得构建一个 web 应用更加简单
默认提供 application.properties/yml 文件
默认通过 spring.profiles.active 属性来决定运行环境时读取的配置文件
EnableAutoConfiguration 默认对于依赖的 starter 进行自动

3.SpringBoot主要有如下核心特点:

  • 包含执行所需的一切的可执行jar包。包含了运行所需的一切,包括内嵌应用服务器等,并打包为一个可执行jar文件部署,这点在微服务概念里非常重要。
  • 约定大于配置理念的完美践行,自动配置模块
  • 提供各种各样的starter简化初始配置过程
  • 提供各种扩展机制等等

4.作用域

在默认情况下,spring应用上下文中所有bean都是作为以单例(singleton)的形式创建的。也就是说,不管给定的一个bean被注入到其他bean多少次,每次所注入的都是同一个实例。

spring定义了多种作用域,可以基于这些作用域创建bean,包括:

单例(singleton):在整个应用中,只创建bean的一个实例。
原型(prototype):每次注入或者通过spring应用上下文获取的时候,都会创建一个新的bean实例。
会话(session):在web应用中,为每个会话创建一个bean实例。
请求(request):在web应用中,为每个请求创建一个bean实例。

5.为什么要用 Spring Boot?

Spring Boot 优点非常多,如:

独立运行

简化配置

自动配置

无代码生成和XML配置

应用监控

上手容易…

6.SpringBoot 实现热部署有哪几种方式?

主要有两种方式:

Spring Loaded

Spring-boot-devtools

7.Spring Boot 有哪些优点?

Spring Boot 的优点有:

1、减少开发,测试时间和努力。

2、使用 JavaConfig 有助于避免使用 XML。

3、避免大量的 Maven 导入和各种版本冲突。

4、提供意见发展方法。

5、通过提供默认值快速开始开发。

6、没有单独的 Web 服务器需要。这意味着你不再需要启动 Tomcat,Glassfish或其他任何东西。

7、需要更少的配置 因为没有 web.xml 文件。只需添加用@ Configuration 注释的类,然后添加用@Bean 注释的方法,Spring 将自动加载对象并像以前一样对其进行管理。您甚至可以将@Autowired 添加到 bean 方法中,以使 Spring 自动装入需要的依赖关系中。

8、基于环境的配置 使用这些属性,您可以将您正在使用的环境传递到应用程序:-Dspring.profiles.active = {enviornment}。在加载主应用程序属性文件后,Spring 将在(application{environment} .properties)中加载后续的应用程序属性文件。

8.Spring 和 SpringBoot 有什么不同?

Spring 框架提供多种特性使得 web 应用开发变得更简便,包括依赖注入、数据绑定、切面编程、数据存取等等。

随着时间推移,Spring 生态变得越来越复杂了,并且应用程序所必须的配置文件也令人觉得可怕。这就是 Spirng Boot 派上用场的地方了 – 它使得 Spring 的配置变得更轻而易举。

实际上,Spring 是 unopinionated(予以配置项多,倾向性弱) 的,Spring Boot 在平台和库的做法中更 opinionated ,使得我们更容易上手。

SpringBoot 带来的好处:

  1. 根据 classpath 中的 artifacts 的自动化配置应用程序
  2. 提供非功能性特性例如安全和健康检查给到生产环境中的应用程序

9.开启 Spring Boot 特性有哪几种方式?

1.继承spring-boot-starter-parent项目
2.导入spring-boot-dependencies项目依赖

10.运行 Spring Boot 有哪几种方式?

1.打包用命令或者放到容器中运行
2.用 Maven/ Gradle 插件运行
3.直接执行 main 方法运行

11.什么是YAML?

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

12.什么是Swagger?Spring Boot实现了它吗?

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

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

13.RequestMapping 和 GetMapping 的不同之处在哪里?

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

14.Spring Boot 可以兼容老 Spring 项目吗,如何做?

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

15.保护 Spring Boot 应用有哪些方法?

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

发布了18 篇原创文章 · 获赞 0 · 访问量 818

猜你喜欢

转载自blog.csdn.net/qq_45122010/article/details/104053439
今日推荐