SpringBoot总结

embedded/2024/11/19 23:04:15/

一、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.ppmy.cn/embedded/138892.html

相关文章

【ChatGPT】让ChatGPT生成特定时间段或主题的文章

让ChatGPT生成特定时间段或主题的文章 ChatGPT能够根据设定的时间段或主题生成文章,但这需要通过设计精准的Prompt来实现。通过结合上下文信息、明确的写作目标和格式要求,您可以高效地引导ChatGPT生成符合预期的内容。本文将详细介绍如何实现这一目标&…

创建游戏云存档功能的完整指南

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

Object.defineProperty和响应式

Object.defineProperty()是一个监听对象属性变化的方法。一般情况下我们是不会直接使用的,或者说我们遇到的场景还没有这么高级。 最有名的例子就是Vue2的响应式实现,就是通过这个方法来实现的。 用起来不难,就是个API,只是用的…

鸿蒙动画开发07——粒子动画

1、概 述 粒子动画是在一定范围内随机生成的大量粒子产生运动而组成的动画。 动画元素是一个个粒子,这些粒子可以是圆点、图片。我们可以通过对粒子在颜色、透明度、大小、速度、加速度、自旋角度等维度变化做动画,来营造一种氛围感,比如下…

Python设计模式详解之3 —— 抽象工厂模式

抽象工厂模式也是一种创建型设计模式,它提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。它特别适合在需要创建多个相关对象且这些对象在逻辑上属于一个“产品族”时使用。 结构: 抽象产品&#xff1…

《大数据中的分布式数据库》

一、引言 在当今大数据时代,数据量呈爆炸式增长,传统的集中式数据库已经难以满足大规模数据存储和处理的需求。分布式数据库作为一种新兴的数据库技术,能够有效地解决大数据带来的挑战,为企业提供高可扩展性、高可用性和高性能的数…

报错java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not ...解决方法

在运行项目时出现java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field com.sun.tools.javac.tree.JCTree qualidzz这样的报错 解决方法 1.第一步:在pom文件中将lombok的版本改成最新的 此时1.18.34是新…

单体架构和微服务架构到底哪个好?

单体和微服务谁是毒瘤?单体、分布式、微服务、SOA到底是什么关系?我的系统该用什么架构?最近终于下定决心研究这个问题并且有所收获,欢迎一起讨论。 一、架构的发展历程 我坚定的认为要深刻的理解一项技术光靠网上一两张按照各项…