• SpringBoot高频面试题


    SpringBoot高频面试题

    1. 什么是SpringBoot?(对SpringBoot的理解)

    • Spring Boot 是Spring中的一个开源的子项目。SpringBoot主要是简化了 Spring 的初始搭建以及开发过程,简化了原本繁重的配置,使用 propertiesyaml 文件的方式来进行配置。提供了各种启动器,让开发者能快速上手。
    • 简单的说,SpringBoot 简化了Spring应用开发,约定大于配置,去繁从简,只要运行就能创建一个独立的、产品级别的应用。

    2. SpringBoot的优点?

    • 可以先回答一个使用了SpringBoot给你比较直观的感受:上手比较快,开发的效率也很高;不需要进行繁重的配置,同时避免大量的 Maven 导入和各种版本冲突问题。

    • 然后再进行细说:比如SpringBoot可以…

      • 独立运行

      Spring Boot 内嵌了各种 servlet 容器,比如Tomcat、Jetty等,现在不再需要打成 war 包部署到容器中,Spring Boot只要打成一个可执行的 jar 包就能独立运行,所有的依赖包都在一个jar包内。

      • 快速使用,原理繁琐的配置

        spring-boot-starter-web启动器自动依赖其他组件,减少了maven的配置。而且添加了spring-boot-starter-web启动器就能拥有web的功能,无需其他配置。

      • 无代码生成和XML配置

        Spring Boot 配置过程中无代码生成,也无需XML配置文件就能完成所有配置工作

      • 应用监控

        提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等

    3. SpringBoot 的核心注解是哪个?它主要由哪几个注解组成的?

    • 启动类上面的注解是**@SpringBootApplication**,它是 SpringBoot 的核心注解,主要组合包含了以下3 个注解:
      • @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能
      • @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项
      • @ComponentScan:Spring组件扫描

    4. 如何理解 Spring Boot 配置加载顺序?

    • 在 SpringBoot 里面,可以使用properties文件、YAML文件、系统环境变量、命令行参数等方式来加载配置。

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

    • Spring Boot 的核心配置文件是 applicationbootstrap 配置文件。

      application 配置文件主要用于 Spring Boot 项目的自动化配置。

      bootstrap 配置文件有以下几个应用场景。

      • 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的
        配置属性来加载外部配置中心的配置信息;
      • 一些固定的不能被覆盖的属性;
      • 一些加密/解密的场景;

    6. Spring Boot 中的 starter 到底是什么?

    • Starte基本上还是基于 Spring 已有功能来实现的。首先它提供了一个自动化配置类,一般命名为 XXXAutoConfiguration,在这个配置类中通过条件注解来决定一个配置是否生效,然后它还会提供一系列的默认配置,也允许开发者根据实际情况自定义相关配置,然后通过类型安全的属性注入将这些配置属性注入进来,新注入的属性会代替掉默认属性。正因为如此,很多第三方框架,我们只需要引入依赖就可以直接使用了。当然,开发者也可以自定义 Starter。

    7. spring-boot-starter-parent 有什么用?

    • spring-boot-starter-parent 主要有如下作用:
      1. 可以定义Java 编译版本
      2. 使用 UTF-8 格式编码。
      3. 继承自 spring-boot-dependencies,这个里边定义了依赖的版本,所以我们在写依赖时不需要写版本号。
      4. 执行打包操作的配置。
      5. 自动化的资源过滤、插件配置。
      6. 针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同环境的配置文件,例如 applicationdev.properties 和 application-dev.yml。

    8. Spring Boot 打成的 jar 和普通的 jar 有什么区别?

    • Spring Boot 项目最终打包成的 jar 是可执行 jar ,这种 jar 可以直接通过终端命令来运行
    • Spring Boot 打成的 jar 不可以作为普通的 jar 被其他项目依赖,即使依赖了也无法使用其中的类。因为普通的 jar 包,解压后直
      接就是包名,包里就是我们的代码,而 Spring Boot 打包成的可执行 jar 解压后,在 \BOOT-INF\classes 目录下才是我们的代码,因此无法被直接引用。如果非要引用,可以在 pom.xml 文件中增加配置,将 Spring Boot 项目打包成两个 jar ,一个可执行,一个可引用。
  • 相关阅读:
    【黑马-SpringCloud技术栈】【05】Nacos配置中心_搭建Nacos集群
    机器学习笔记 - TransUNet 用于医学图像分割的编码器
    软考 系统架构设计师系列知识点之软件架构风格(9)
    【C++风云录】精益求精:探索C++开发中的性能优化艺术
    【Unity】Unity寻路系统讲解及Navigation实际应用
    从单机到分布式微服务,大文件校验上传的通用解决方案
    java-net-php-python-ssm仿猫眼电影计算机毕业设计程序
    企业开发名词解析 — — 前置机、跳板机、堡垒机
    传输层/UDP/TCP协议
    当数据量越来越大,优化时是分库分表还是使用newSQL
  • 原文地址:https://blog.csdn.net/qq_52248567/article/details/126487048