SpringBoot总结

一、Spring\SpringBoot\SpringCloud

Spring:Spring是SpringBoot和SpringCloud的基础。Spring是一个广泛使用的企业级 Java 应用程序框架,提供了应用开发的核心功能,如依赖注入、AOP(面向切面编程) 等,旨在简化开发过程
SpringMVC:是 Spring 框架的一部分,是一个用于构建 Web 应用程序的强大框架。它遵循MVC(模型-视图-控制器)设计模式,使得开发者能够轻松开发处理用户请求的 Web 应用。

SpringBoot:Spring Boot 是一个基于 Spring 框架的开源 Java 框架,它简化了 Spring 应用程序的配置和部署,使开发人员可以更快地构建、部署和测试Spring应用。

SpringCloud:Spring Cloud 是一套基于 Spring Boot 的工具集,用于构建分布式系统和微服务架构。它提供了各种开箱即用的解决方案,帮助开发者快速实现复杂的分布式系统。

二、SpringBoot的核心特点

1、内嵌服务器:Spring Boot 支持内嵌的 HTTP 服务器,如 Tomcat、Jetty 或 Undertow,可以直接将应用程序打包成一个独立的 JAR 文件运行,简化了部署过程。
2、简化配置:Spring Boot 提供默认配置并且支持基于注解的配置,避免了传统 Spring 配置中繁琐的 XML 配置文件,减少了大量的手动配置。
3、自动配置(开箱即用):Spring Boot 提供了大量的自动配置选项,可以根据项目中的依赖自动配置 Spring 应用。比如,当你使用数据库相关的依赖时,Spring Boot 会自动配置数据源。
4、快速开发:Spring Boot 通过“约定大于配置”的理念,减少了配置文件的编写,使得开发者可以集中精力进行业务逻辑的开发。它还通过 Starter 依赖简化了常见模块的配置。
5、生产级特性:Spring Boot 提供了许多有助于生产环境的特性,例如健康检查、监控、日志管理等。

三、SpringBoot的基本结构

在这里插入图片描述

四、SpringBoot核心组件

在这里插入图片描述

五、SpringBoot的启动流程

(启动入口:当 SpringBoot 项目启动时,会在当前工作目录下寻找有@SpringBootApplication注解标识的类,即启动类。并在启动类的main 方法里调用 SpringApplication.run() 方法启动应用。)
在这里插入图片描述

六、面试题汇总

6.1 SpringBoot是如何通过main方法启动web项目的

首先,通过main方法调用SpringApplication.run()方法启动应用之后,SpringApplication 类的构造器会初始化应用程序的一些属性,如确定项目类型(Web 或 非Web),如果是Web类型,就创建和配置适应的ApplicationContext以及所需要的依赖。由于SpringBoot内置了服务器,因此会启动 Web 容器并监听指定端口,刷新 ApplicationContext 完成 Bean 创建与依赖注入,执行相关逻辑,最终使应用进入运行状态,开始监听和处理请求。

6.2 SpringBoot是如何实现自动配置的

Spring Boot 实现自动配置的核心机制是通过 @EnableAutoConfiguration 注解与 spring-boot-autoconfigure 包的配合来完成的。

6.3 SpringBoot支持哪些嵌入Web容器

在这里插入图片描述

6.4 application.properties和application.yml的区别

两者都是配置文件
在这里插入图片描述

6.5 SpringBoot中如何定义和读取自定义配置

定义:application.properties 或 application.yml 中定义配置。
读取:使用注解:
(1)@Value 注解:用于读取简单的配置项。
(2)@ConfigurationProperties 注解:适用于将一组相关的配置映射到 Java 对象,适合复杂配置。

6.6 SpringBoot配置文件加载优先级

优先级高的先加载
优先级顺序(由高到低):
在这里插入图片描述
附:外部配置文件 是指不存放在 Spring Boot 项目内部(如 src/main/resources 目录下)的配置文件,而是存放在项目外部的配置文件(例如操作系统的文件系统、网络路径、Docker 容器内部等)。这些文件可以通过环境变量、命令行参数或其他方式指定路径,Spring Boot 会加载这些外部配置文件来覆盖项目中的默认配置。

6.7 SpringBoot打成的jar和普通的jar有什么区别

在这里插入图片描述

6.8 SpringBoot是否可以使用xml配置

Spring Boot 可以使用 XML 配置,但是它并不是默认的配置方式也并不推荐,会产生优先级问题并失去一部分自动配置的优势。Spring Boot 强调的是 约定优于配置注解配置,通过自动配置和 application.properties/application.yml 文件来简化配置。但是,Spring Boot 也支持使用 XML 配置,特别是对于需要迁移或集成的现有 Spring 项目。

6.9 SpringBoot默认同时可以处理的最大连接数是多少

在这里插入图片描述

6.10 如何理解SpringBoot中的starter

Spring Boot Starter 是一组针对特定功能的预配置模块。每个 Starter 包含了一个功能模块所需要的所有依赖,允许开发者通过简单地引入一个 Starter 来启用该功能,无需手动配置每个库和依赖。

有点像我们要去买一些商品,这时有一个人把它们都打包成了一个套餐,那我们不用再一个一个找了,可以直接买这个套餐节省时间和精力。

6.11 SpringBoot中如何实现定时任务

使用@Scheduled注解并开启定时任务功能

6.12 什么是SpringBoot Actuator?它有什么优势?

SpringBoot Actuator是SpringBoot提供的一个应用程序的管理和监控工具,允许开发者查看和管理应用的运行时状态、性能指标、健康检查等信息。

优势:
(1)易于集成:Spring Actuator 集成非常简单,只需在 Spring Boot 项目中引入 spring-boot-starter-actuator 依赖,然后启用相应的端点即可,无需复杂的配置。
(2)支持自定义: 开发者可以自定义暴露的端点或度量标准,扩展 Spring Actuator 的功能来满足特定的业务需求。
(3)自动检查:提供自动化的健康检查和性能度量功能,确保各个组件的正常运行。

6.13 SpringBoot1.X、SpringBoot2.X、SpringBoot3.X之间的区别以及主要的改进

(1)Spring Boot 1.x 主要集中在简化 Spring 应用的配置和启动过程,适合传统应用和单体应用。
(2)Spring Boot 2.x 重点在于对新技术(如 WebFlux 和响应式编程)的支持,以及对 Java 11+ 和微服务架构的优化,但仍基于JAVA EE,适合构建现代化的分布式系统。
(3)Spring Boot 3.x 基于Jakarta EE,完全兼容 Spring 6,强化对 Java 17 和 GraalVM 的支持,适合需要高性能、低启动时间的应用程序,并要求使用较新的 Java 版本。

6.14 SpringBoot如何实现异步处理

在这里插入图片描述

6.15 SpringBoot(Spring)中为什么不推荐使用@Autowired

在这里插入图片描述

6.16 Springboot中如何实现多数据源配置

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/474027.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tailscale 自建 Derp 中转服务器

文章目录 为什么要建立 Derp 中转服务器?安装 Go 环境通过 Go 安装 Derp处理证书文件自签一个域名启动 DerpIPV6 的支持防止 Derp 被白嫖以上的操作命令合集自建 Headscale 添加 Derp参考 为什么要建立 Derp 中转服务器? Tailscale 使用的算法很有趣: 所…

vue实现展示并下载后端返回的图片流

// 点击下载 downLoadCode() {const image new Image();image.setAttribute("crossOrigin", "anonymous");image.onload () > {const canvas document.createElement("canvas");canvas.width image.width;canvas.height image.height;c…

Docker: ubuntu系统下Docker的安装

安装依赖 操作系统版本 Ubuntu Kinetic 22.10Ubuntu Jammy 24.04 (LTS)Ubuntu Jammy 22.04 (LTS)Ubuntu Focal 20.04 (LTS)Ubuntu Bionic 18.04 (LTS) CPU架构支持 ARMx86_64 查看我们的系统版本信息 uname -a通过该命令查得cpu架构是x86_64的; cat /etc/*re…

极速入门数模电路

一. 认识数模元器件 1.1 面包板 1.2 导线 一般使用红色导线表示正极,黑色导线表示负极。 1.3 纽扣电池 1.4 电池座 1.4 LED灯 1.5 数码管 1.6 有源蜂鸣器 1.7 扬声器 1.8 电容 电容接电池之后可以充电,充完电后电容接LED灯可以放电。 1.9 电阻 1.1…

如何合理设计一套springcloud+springboot项目中的各个微服务模块之间的继承关系的最优方案

文章目录 一、模块化设计所遵循的原则二、项目架构设计三、各个模块作用说明3.1 core 模块3.2 common 模块3.3 generatorcode模块3.4 business 模块3.5 web 模块3.6 admin 模块3.7 父pom 四、采用import引入SpringBoot 在springcloud微服务项目中经常用到多模块化的架构设计&am…

java版询价采购系统 招投标询价竞标投标系统 招投标公告系统源码

在信息化飞速发展的今天,电子招投标采购系统已成为企业运营中的重要一环。这一系统不仅优化了传统的招投标流程,还为企业带来了诸多显著的价值。 首先,电子招投标采购系统极大地提高了工作效率。传统招投标过程中,企业需要耗费大…

物联网——UNIX时间戳、BKP备份寄存器、RTC时钟

RTC时钟 Unix时间戳 UTC/GMT 时间戳转换 时间戳转换 BKP简介 RTC框图 RTC基本结构 硬件供电电路 RTC操作注意事项 接线图(读写备份寄存器和实时时钟)

系统思考—跳出症状看全局

在和企业创办人交流中,经常听到这样的疑问:“为什么我们试了这么多办法,问题却还是没有解决?”其实很多时候,根本原因并不在于对策不到位,而是连问题的本质都没找对。 曾经和一家企业合作,为了解…

RK3568平台开发系列讲解(platform虚拟总线驱动篇)实验:点亮一个LED

🚀返回专栏总目录 文章目录 一、设备树二、平台驱动三、应用沉淀、分享、成长,让自己和他人都能有所收获!😄 📢xxx 程序编写的主要内容为添加 LED 灯的设备树节点、在驱动程序中使用 of 函数获取设备节点中的属性,编写测试应用程序。 • 首先向设备树添加 LED 设备节点…

【售前方案】工业园区整体解决方案,智慧园区方案,智慧城市方案,智慧各类信息化方案(ppt原件)

基于云计算、物联网、移动通信计算的智慧园区集中运营管理平台是一个高度集成化、智能化的管理系统,它利用先进的技术手段对园区进行全方位的监控和管理。 软件资料清单列表部分文档清单:工作安排任务书,可行性分析报告,立项申请审…

Nacos 配置中心变更利器:自定义标签灰度

作者:柳遵飞 配置中心被广泛使用 配置中心是 Nacos 的核心功能之一,接入配置中心,可以实现不重启线上应用的情况下动态改变程序的运行期行为,在整个软件生命周期中,可以极大降低了软件构建及部署的成本,提…

两大新兴开发语言大比拼:Move PK Rust

了解 Move 和 Rust 的差异有助于开发者根据项目的具体需求选择最合适的语言。选择不恰当的语言可能会导致项目后期出现技术债务。不同语言有其独特的优势。了解 Move 和 Rust 的差异可以帮助开发者拓展技术视野,发现不同语言在不同领域的应用潜力。 咱们直奔主题&a…

【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法

【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法 目录 文章目录 【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法目录摘要:研究背景:问题与挑战:如何解…

面试题:Kafka(一)

1. Kafka如何保证消息不丢失 生产者发送消息到Brocker丢失 设置异步发送 消息重试 消息在Brocker中存储丢失 发送确认机制acks 消费者从Brocker接收消息丢失 Kafka 中的分区机制指的是将每个主题划分成多个分区(Partition)topic分区中消息只能由消费者…

基于多模板配准的心腔分割算法

🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年11月18日20点09分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅…

ScubaGear:用于评估 Microsoft 365 配置是否存在安全漏洞的开源工具

ScubaGear 是由网络安全和基础设施安全局 (CISA) 创建的开源工具,用于自动评估 Microsoft 365 (M365) 配置中是否存在潜在的安全漏洞。 ScubaGear 分析组织的 M365 租户配置,提供可操作的见解和建议,以帮助管理员解决安全漏洞并加强 Microso…

PgSQL汇总

SQL sql执行顺序 1.from 2.on 3.join 4.where 5.group by(开始使用select中的别名,后面的语句中都可以使用) 6. avg,sum.. 7.having 8.select 9.distinct 10.order by 11.limit⭐流程控制语句 CASE 写法一: CASE case_valueWHEN when_value THENsta…

.NET 简介

文章目录 一、组件二、免费且开源三、支持四、.NET 生态系统 .NET 是一个免费的跨平台开放源代码开发人员平台,用于生成多种类型的应用程序。 .NET 可以运行使用多种语言编写的程序,其中 C# 是最常用的语言。 .NET 依赖于许多大规模应用在生产中使用的高…

Linux之vim模式下全选命令

在Linux系统中,使用Vim编辑器进行全选操作可以通过以下几种方式实现: 1.使用键盘快捷键 按下 ”ggVG”(先按下”g”,再按下”g”,再按下”V”,最后按下”G”)可以全选当前文件内容。其中 ”g…

【学习笔记】大模型调优(llms_tuning)

项目地址:GitHubchunhuizhang/llms_tuning 文章目录 01 TRL SFTTrainer 中的 formatting_func 与 DataCollatorForCompletion02 accelerate ddp 与 trl SFTTrainer03 finetune_llama3_for_RAG04 optimizer Trainer 优化细节(AdamW,grad clip、…