当前位置: 首页 > news >正文

SpringBoot面试高频总结01

1. 什么是SpringBoot?

SpringBoot是一个基于Spring框架的快速开发框架,它采用约定大于配置,自动装配的方式,可以快速地创建独立的,生产级别的,基于Spring的应用程序

相比于传统的Spring框架,SpringBoot更加简单易用,它将大量常见的配置和依赖项内置到框架,开发人员可以快速搭建一个完整的应用程序,无需手动配置复杂的XML文件或Java代码。SpringBoot还支持集成其他流行的框架和技术等。

2、SpringBoot的优点

  • 内置servlet容器,不需要在服务器部署 tomcat。只需要将项目打成 jar 包,使用 java -jar xxx.jar一键式启动项目
  • SpringBoot提供了starter,把常用库聚合在一起,简化复杂的环境配置,快速搭建spring应用环境
  • 可以快速创建独立运行的spring项目,集成主流框架

3、什么是约定大于配置?


约定大于配置是一种软件开发理念,它的核心思想是:通过建立约定,默认值和惯例,减少编程中需要做出的决策,提高开发效率和生产力。

例如在SpringBoot中,默认按照一定的命名规则查找数据库连接,bean定义等相关内容,这样开发人员就可以省略大量的配置和代码,直接使用默认的约定和规则来完成开发任务,从而提高开发效率和代码质量。

总的来说,约定大于配置是一种软件开发的优化策略,通过建立约定和默认值,帮助开发人员快速构建和维护高质量的应用程序,减少出错的可能性,提高开发效率和生产力。

4、SpringBoot的自动配置原理?

1.通过@SpringBootConfiguration引入了@EnableAutoConfiguration(负责启动自动配置功能)

2.@EnableAutoConfiguration引入了@Import

3.  Spring容器启动时:加载loc容器时会解析@Import 注解

4.  @lmport导入了一个deferredlmporSelector,它会使SpringBoot的自动配置类的顺序在最后,这样方便我们扩展和覆盖

5.  然后读取所有的/META-INF/spring.factories文件

6.过滤出所有AutoConfigurtionClass类型的类

7.  最后通过@Condition排除无效的自动配置类

5、SpringBoot的核心注解

1.  @SpringBootApplication注解:这个注解标识了一个SpringBoot工程

2.  @SpringBootConfiguration:这个注解实际就是一个@Configuration,表示启动类也是一个配置类

3.  @EnableAutoConfiguration:向Spring容器中导入了一个Selector,用来加载ClassPath下SpingFacories中所定义的自动配置类,将这些自动加载为配置Bean

4.  @Conditional 也很关键,如果没有它我们无法在自定义应用中进行定制开发

@ConditionalOnBean.

@ConditionalOnClass.

@ConditionalOnExpression

6、  读取配置文件和加载顺序优先级

通过事件监听的方式读取的配置文件: ConfigFileApplicationListener

外部配置文件:优先级从高到低,高优先级的配置覆盖低优先级的配置,所有配置会形成互补配置

同一级下 application.properties 优先于 application.yml

7、  Spring 和 SpringBoot的关系和区别?

SpringBoot是Spring生态的产品

Spring Framework是一个容器框架

SpringBoot 它不是一个框架、它是一个可以快速构建基于Spring的脚手架(里面包含了$pring和各种框架),为开发Spring生态其他框架铺平道路(约定大于配置)

2个不是一个层面的东西, 没有可比性。

8、Spring Boot支持哪些日志框架?

Spring Boot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用 Starter 启动器,Spring Boot 将使用 Logback 作为默认日志框架,但是不管是那种日志框架他都支持将配置文件输出到控制台或者文件中

9、运行SpringBoot有哪几种方式?

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

10、什么是Swagger

Swagger是一个API文档生成工具,可以根据代码注释自动生成API文档,同时提供易于使用的UI界面,可以让开发者方便地查看和测试API接口。

相关文章:

SpringBoot面试高频总结01

1. 什么是SpringBoot? SpringBoot是一个基于Spring框架的快速开发框架,它采用约定大于配置,自动装配的方式,可以快速地创建独立的,生产级别的,基于Spring的应用程序。 相比于传统的Spring框架,S…...

Linux 工作队列(Workqueue):概念与实现

目录 一、工作队列的概念1.1 什么是工作队列1.2 为什么使用工作队列 二、工作队列的实现2.1 定义和初始化工作队列2.2 工作队列API 三、工作队列的应用3.1 延迟执行任务3.2 处理复杂的中断任务 四、工作队列的类型4.1 普通工作队列4.2 高优先级工作队列 五、总结 在Linux内核中…...

前端页面是如何禁止被查看源码、被下载,被爬取,以及破解方法

文章目录 1.了解禁止查看,爬取原理1.1.JS代码,屏蔽屏蔽键盘和鼠标右键1.2.查看源码时,通过JS控制浏览器窗口变化2.百度文库是如何防止抓包2.1.HTPPS2.2. 动态加载为什么看不到?如何查看动态加载的内容?3.禁止复制,如果解决3.1.禁止复制原理3.2.如何破解1.了解禁止查看,爬…...

51单片机嵌入式开发:14、STC89C52RC 之HX1838红外解码NEC+数码管+串口打印+LED显示

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示1 概述2 硬件电路2.1 遥控器2.2 红外接收器电路2.3 STC89C52单…...

在不同环境中,Java应用程序和MySQL等是如何与Docker进行交互和操作的?

1. 本地开发环境 在本地开发环境中,可以使用Docker Compose来管理和运行Java应用程序容器和MySQL容器。通常,会创建一个docker-compose.yml文件,定义需要的服务及其配置。 以下是一个示例docker-compose.yml文件: version: 3 services:app…...

《DRL》P10-P15-损失函数-优化(梯度下降和误差的反向传播)

文章目录 损失函数交叉熵损失多类别分类任务概述真实标签的独热编码交叉熵损失函数 L p 范式 \mathcal{L}_{p}\text{ 范式} Lp​ 范式均方误差平均绝对误差 优化梯度下降和误差的反向传播 简介 本文介绍了神经网络中的损失函数及其优化方法。损失函数用于衡量模型预测值与真实值…...

Spring Boot项目的404是如何发生的

问题 在日常开发中,假如我们访问一个Sping容器中并不存在的路径,通常会返回404的报错,具体原因是什么呢? 结论 错误的访问会调用两次DispatcherServlet:第一次调用无法找到对应路径时,会给Response设置一个…...

<数据集>手势识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:2400张 标注数量(xml文件个数):2400 标注数量(txt文件个数):2400 标注类别数:5 标注类别名称:[fist, no_gesture, like, ok, palm] 序号类别名称图片数框数1fist597…...

【Vue3】选项式 API

【Vue3】选项式 API 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。…...

2、如何发行自己的数字代币(truffle智能合约项目实战)

2、如何发行自己的数字代币(truffle智能合约项目实战) 1-Atom IDE插件安装2-truffle tutorialtoken3-tutorialtoken源码框架分析4-安装openzeppelin代币框架(代币发布成功) 1-Atom IDE插件安装 正式介绍基于web的智能合约开发 推…...

百日筑基第二十三天-23种设计模式-创建型总汇

百日筑基第二十三天-23种设计模式-创建型总汇 前言 设计模式可以说是对于七大设计原则的实现。 总体来说设计模式分为三大类: 创建型模式,共五种:单例模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式。结构型模式,共…...

张量的基本使用

目录 1.张量的定义 2.张量的分类 3.张量的创建 3.1 根据已有数据创建张量 3.2 根据形状创建张量 3.3 创建指定类型的张量 1.张量的定义 张量(Tensor)是机器学习的基本构建模块,是以数字方式表示数据的形式。PyTorch就是将数据封装成张量…...

Oracle(14)什么是唯一键(Unique Key)?

唯一键(Unique Key)是数据库表中的一个或多个列,它们的值必须在整个表中唯一,但允许包含NULL值。唯一键的主要目的是确保表中每一行的数据在指定的列(或列组合)中是唯一的,以防止重复数据的出现…...

PostgreSQL的引号、数据类型转换和数据类型

一、单引号和双引号(重要): 1、在mysql没啥区别 2、在pgsql中,实际字符串用单引号,双引号相当于mysql的,用来包含关键字; -- 单引号,表示user_name的字符串实际值 insert into t_user(user_nam…...

Mad MAD Sum-Codeforces Round 960 (Div. 2)

题目在这里 大意: MAD函数返回出现次数 ≥ 2 \geq2 ≥2的最大整数 b i b_i bi​ M A D ( a [ 1 , 2 , . . . i ] ) MAD(a[1,2,...i]) MAD(a[1,2,...i]) 每次操作把 a i a_i ai​进行上述操作,直到全变为0为止,对每次操作的数组进行求和,记…...

Flutter 插件之 package_info_plus

当使用Flutter开发应用时,通常需要获取应用程序的基本信息,例如包名、版本号和构建号。Flutter提供了一个名为 package_info_plus 的插件,它能方便地帮助我们获取这些信息。 1. 添加依赖 首先,需要在项目的 pubspec.yaml 文件中添加 package_info_plus 的依赖。打开 pubs…...

如何实现布隆过滤器?

1.布隆过滤器的场景 在Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?中我们说到可以使用布隆过滤器避免「缓存穿透」。 你会说我们只要记录了每个用户看过的历史记录,每次推荐的时候去查询数据库过滤存在的数据实现去重。 …...

运维团队如何高效监控容器化环境中的PID及其他关键指标

随着云计算和容器化技术的快速发展,越来越多的企业开始采用容器化技术来部署和管理应用程序。然而,容器化环境的复杂性和动态性给运维团队带来了前所未有的挑战。本文将从PID(进程标识符)监控入手,探讨运维团队如何高效…...

通过vue3 + TypeScript + uniapp + uni-ui 实现下拉刷新和加载更多的功能

效果图: 核心代码: <script lang="ts" setup>import { ref, reactive } from vue;import api from @/request/api.jsimport empty from @/component/empty.vueimport { onLoad,onShow, onPullDownRefresh, onReachBottom } from @dcloudio/uni-applet form …...

Pointnet++改进即插即用系列:全网首发WTConv2d大接受域的小波卷积|即插即用,提升特征提取模块性能

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入WTConv2d,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理…...

4核16G服务器支持多少人?4C16G服务器性能测评

租赁4核16G服务器费用&#xff0c;目前4核16G服务器10M带宽配置70元1个月、210元3个月&#xff0c;那么能如何呢&#xff1f;配置为ECS经济型e实例4核16G、按固定带宽10Mbs、100GB ESSD Entry系统盘。 那么问题来了&#xff0c;4C16G10M带宽的云服务器可以支持多少人同时在线&…...

塔子哥的平均数-美团2023笔试(codefun2000)

题目链接 塔子哥的平均数-美团2023笔试(codefun2000) 题目内容 给定一个正整数数组a1 ,a2 ,…,an&#xff0c;求平均数正好等于k的最长连续子数组的长度 输入描述 输出描述 输出一个整数&#xff0c;表示最长满足题目条件的长度。 样例1 输入 5 2 1 3 2 4 1 输出 3 样例1解释…...

故障诊断 | 基于小波包能量谱对滚动轴承的故障诊断Matlab代码

故障诊断 | 基于小波包能量谱对滚动轴承的故障诊断Matlab代码 目录 故障诊断 | 基于小波包能量谱对滚动轴承的故障诊断Matlab代码效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于小波包能量谱对滚动轴承的故障诊断 matlab代码 数据采用的是凯斯西储大学数据 首先利用…...

E14.【C语言】练习:有关短路运算

#include <stdio.h> int main() {int i 0,a0,b2,c 3,d4;i a && b && d;printf("a %d\nb %d\nc %d\nd %d\n", a, b, c, d);return 0; } 求输出结果 分析&#xff1a; a&#xff1a;先使用后 &#xff0c;a&#xff08;见第15篇http://…...

python BeautifulSoup库安装与使用(anaconda、pip)

BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python库。Beautiful Soup 已成为和 lxml、html5lib 一样出色的Python解释器&#xff0c;为用户灵活地提供不同的解析策略或强劲的速度。 Requests 获取html BeautifulSoup 解析html、xml,BeautifulSoup4库也称bs4库 安装B…...

基于Matlab的数据可视化

基于Matlab的数据可视化 一、二维图形的绘制&#xff08;一&#xff09;基本图形函数&#xff08;1&#xff09;plot函数&#xff08;2&#xff09;fplot函数&#xff08;3&#xff09;其他坐标系的二维曲线 &#xff08;二&#xff09;图形属性设置&#xff08;1&#xff09;线…...

深入理解Linux网络(二):UDP接收内核探究

深入理解Linux网络&#xff08;二&#xff09;&#xff1a;UDP接收内核探究 一、UDP 协议处理二、recvfrom 系统调⽤实现 一、UDP 协议处理 udp 协议的处理函数是 udp_rcv。 //file: net/ipv4/udp.c int udp_rcv(struct sk_buff *skb) {return __udp4_lib_rcv(skb, &udp_…...

linux内核中list的基本用法

内核链表 1 list_head 结构 为了使用链表机制&#xff0c;驱动程序需要包含<linux/types.h>头文件&#xff0c;该文件定义了如下结构体实现双向链&#xff1a; struct list_head {struct list_head *next, *prev; };2 链表的初始化 2.1 链表宏定义和初始化 可使用以…...

项目中无关痛痒的词句背后深层含义

项目中听上去无关痛痒的词句背后&#xff0c;深层含义有的时候并不友善。 他们说的&#xff1a;进度表有些激进 真正的意思&#xff1a;我们有麻烦了 他们说的&#xff1a;我们将在接下来的几个迭代里面弥补延误 真正的意思&#xff1a;我们还是有麻烦 他们说的&#xff1…...

DLMS协议中的高级安全(HLS)身份验证

1.四步身份验证协议 在IEC 62056-53中已说明&#xff0c;ACSE提供部分高级身份安全&#xff08;HLS&#xff09;验证服务。高级身份安全验证适用于通信通道不能提供内部安全&#xff0c;应采取防范措施以防止偷听和信息&#xff08;密码&#xff09;重现的情况。这时&#xff…...

想要将网站信息插到文本链接怎么做/哪个平台可以免费打广告

1、首先在存放代码的服务器中部署好maven环境&#xff0c;用于对开发的代码打jar包 yum install maven 2、手动运行maven对java代码打包&#xff0c;看能否正常生成jar包。maven打包的参数通常是开发提供。 maven clean package java -jar test-SNAPSHOT.jar #运行生成的…...

晋江文学城电脑版/搜索引擎排名优化公司

报道&#xff5c;深度学习这件小事网络上流传了一份一二线城市知名的互联网&#xff08;或者说IT相关&#xff09;公司名单&#xff0c;比较全&#xff0c;本文新增了一些&#xff0c;还有一些已经淡出圈子的就删除了&#xff0c;做了一些修改&#xff0c;相对较新。当然了&…...

阿里云 网站建设/深圳优化公司样高粱seo

原 Oracle DML NOLOGGINGhttps://blog.csdn.net/tianlesoftware/article/details/5701596版权声明&#xff1a; https://blog.csdn.net/tianlesoftware/article/details/5701596 一&#xff0e; NOLOGGING 说明 在对大表插入数据的时候&#xff0c;经常会用到nologging 选项。N…...

水泵行业网站怎么做/宁波网络推广方法

Long.parseLong(String)方法&#xff0c;将 string 参数解析为有符号十进制 &#xff0c;返回一个long的result基本类型值 Long.ValueOf(String) ,方法得到的值非常相似。只是最后被转换为一个Long的包装类。...

黑科技软件网站/推广公司是做什么的

一. 静态库的生成 1. 测试目录: lib 2. 源码文件名: mywindow.h, mywindow.cpp, 类MyWindow继承于QPushButton, 并将文字设置为"Im in class MyWindow"; 3. 编写项目文件: mywindow.pro 注意两点: TEMPLATE lib CONFIG staticlib …...

医疗美容网站建设方案/百度地图人工电话

1. 关于编译说明。 http://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/ 2. 关于快捷键与代码阅读 http://www.cnblogs.com/leaven/archive/2011/02/08/1949918.html转载于:https://www.cnblogs.com/jhj117/p/4127534.html...