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

面试--springboot基础

1、约定优于配置,理解
  • 是一种软件设计的范式,减少开发人员对于配置项的维护,更加聚焦在业务逻辑上

  • 基于spring框架开发web项目,只需要做一次配置

    springboot starter启动依赖,帮我们管理jar包版本

    当前应用依赖spring mvc相关的jar,会自动内置tomcat运行web应用,不需要再单独部署

    自动装配机制的实现中国,通过扫描约定路径下的配置文件,实现bean的自动装配

2、自动装配机制的原理

自动把第三方组件的bean装载到IOC容器中,不需要再去写bean的装配配置

启动类上@SpringBootApplication就可以实现自动装配,真正实现自动装配的注解是@EnableAutoConfiguration

  • 引入starter启动依赖组件,这个组件里必须包含@Configuration 配置类,通过@Bean声明需要装配到IOC的bean对象

  • 这个配置类是放在第三方jar包里,然后通过约定优于配置私下,把这个配置类的全路径放在classpath:/META-INF/spring.factories文件中,这样springboot就可以知道第三方jar包里的配置类的位置,这个步骤主要是用到spring里SpringFactoriesLoader来完成的

  • springboot拿到jar包的配置类后,再通过spring提供的ImportSelector接口实现动态加载

启动底层主要是三个注解:

  • @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
  • @EnableAutoConfiguration:打开自动配置的功能
  • @ComponentScan:Spring组件扫描。

3、如何理解starter

Spring Boot 中的 starter 到底是什么 ? - 知乎

starter是启动以来,为何对应的jar包版本依赖,避免一些版本冲突的问题。内部集成了自动装配机制,这个组件会自动集成到spri那个生态下,并且自动装配bean,只需要在在 application.properties中维护配置就可以了,官方是spring-boot-starter-xxx开头、

常用的:spring-boot-starter-data-redis、druid-spring-boot-starter

4、如何解决跨域

访问浏览器网页时,只能访问同源的资源,比如协议、域名、端口号不同的资源时存在限制

  • jsonp:动态地创建<script>标签,只支持get请求

  • cros:服务器短配置Access-Control-Allow-Origin,配置允许哪些域名支持跨域请求

    @CrossOrigin(origins = "http://localhost:8080")指定哪些允许跨域

    继承WebMvcConfigurer重写addCorsMappings设置请求源

  • nginx反向代理

        add_header Access-Control-Allow-Origin

        add_header Access-Control-Allow-Methods

5. 事物的使用

使用注解@EnableTransactionManagement开启事物之后,然后在Service方法上添加注解@Transactional

6. Async异步调用方法

方法上使用@Async注解,需要在启动类加入@EnableAsync

7. 核心配置文件ootstrap.properties 和application.properties区别

在结合Spring Cloud 时,bootstrap.properties配置就会经常遇到了,特别是在需要加载一些远程配置文件的时侯。

  • boostrap 由父 ApplicationContext 加载的,比applicaton 优先加载,配置在应用程序上下文的引导阶段生效,且 boostrap 里面的属性不能被覆盖;
  • application 由ApplicatonContext 加载,用于 spring boot 项目的自动化配置。

8、全局异常处理

注解@RestControllerAdvice,重写全局异常处理方法

9. 无需重新启动服务器重新加载 Spring Boot 上的更改

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

相关文章:

面试--springboot基础

1、约定优于配置&#xff0c;理解 是一种软件设计的范式&#xff0c;减少开发人员对于配置项的维护&#xff0c;更加聚焦在业务逻辑上 基于spring框架开发web项目&#xff0c;只需要做一次配置 springboot starter启动依赖&#xff0c;帮我们管理jar包版本 当前应用依赖spring…...

“高端化”围城中,方太集团茅忠群的理想与现实

撰稿|行星 来源|贝多财经 “成为一家伟大的企业”&#xff0c;这是深耕厨电领域27年的方太集团&#xff08;下称“方太”&#xff09;矢志不渝的宏伟愿景。 在历经厨电行业十余年的高速发展期后&#xff0c;面临市场热度渐退、赛道高手林立的局面&#xff0c;在行业逆流中坚…...

Linux文件管理知识:文本处理

上篇文章详细介绍了Linux系统中查找文件的工具或者命令程序的相关操作内容介绍。那么&#xff0c;今天呢&#xff0c;这篇文章围绕Linux系统中文本处理来阐述。 众所周知&#xff0c;所有Linux操作系统都离不开一个核心原则&#xff0c;那就是它是由很多种文件组成的&#xff0…...

flink的带状态的RichFlatMapFunction函数使用

背景 使用RichFlatMapFunction可以带状态来决定如何对数据流进行转换&#xff0c;而且这种用法非常常见&#xff0c;根据之前遇到过的某个key的状态来决定再次遇到同样的key时要如何进行数据转换&#xff0c;本文就来简单举个例子说明下RichFlatMapFunction的使用方法 RichFl…...

MySQL的安装使用(入学篇)

目录 1 MySQL安装 1.1 安装epel源 1.2 安装MySQL Repository 1.3 安装MySQL官方yum源 1.4 安装服务端、客户端 1.5 启动MySQL服务 2 MySQL 使用 2.1 获取初始登录密码 2.2 登录MySQL数据库 2.3 修改密码 2.4 退出数据库 2.5 使用新密码登录数据库 2.6 重启数据库 2.7 创建数据…...

面试复习整理

redis持久化方式和原理 Redis持久化是指将Redis内存中的数据以某种形式保存到磁盘上&#xff0c;以保证在Redis重启后数据不会丢失。Redis支持两种持久化方式&#xff1a;RDB&#xff08;Redis DataBase&#xff09;和AOF&#xff08;Append Only File&#xff09;。 RDB持久…...

第四章 :Spring Boot 配置文件指南

第四章 :Spring Boot 配置文件 前言 本章知识重点:作者结合开发实际经验与应用场景结合,整理了5种获取配置属性的方式。配置文件中获取属性应该是SpringBoot开发中最为常用的功能之一,但是常用的功能,仍然有很多开发者在这个方面踩坑。通过本章节学习在实际中避免一些坑,…...

常用中间件分类

常见的中间件包括&#xff1a; 消息中间件&#xff1a;用于处理应用程序之间的异步消息传递&#xff0c;常见的消息中间件包括 RabbitMQ、Apache Kafka、ActiveMQ 等。 缓存中间件&#xff1a;用于缓存数据以加快访问速度&#xff0c;常见的缓存中间件包括 Redis、Memcached 等…...

中文编程软件视频推荐,自学编程电脑推荐,中文编程开发语言工具下载

中文编程软件视频推荐&#xff0c;自学编程电脑推荐&#xff0c;中文编程开发语言工具下载 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的软件…...

Spring Boot 启动加速

一、简介 本文将带你了解如何通过调整 Spring 应用的配置、JVM 参数和使用 GraalVM 原生镜像来缩短 Spring Boot 的启动时间。 二、调整 Spring 应用 首先&#xff0c;创建一个 Spring Boot&#xff08;2.5.4&#xff09;应用&#xff0c;添加 Spring Web、Spring Actuator …...

UDP数据报文格式

...

软考-系统架构-2023-反思

2023年11月4日&#xff0c;参加了软考的高级架构设计考试。针对于这次考试做一些总结和反思。 我的考试准备周期非常长&#xff0c;但是实际的时间非常少。差不多一年前我就开始有这个计划和想法准备考试了&#xff0c;但是前期基本上就是翻翻书&#xff0c;跟没有开始区别并不…...

day52

今日内容概要 web应用程序 手写web框架(帮助我们理解别人写好的成熟框架、重点在于思路的理解、代码无需掌握) Django框架的学习 Python中得主流框架 框架的下载、安装、版本、怎么启动、怎么使用等 三板斧问题 web应用程序 Django框架是一款专门用来开发web应用的框架 …...

Mysql关联查询

Mysql关联查询 1、数据准备 # 班级表 create table class(id int primary key auto_increment,name varchar(20),description varchar(100) );# 学生表 create table student(id int primary key auto_increment,sn varchar(20),name varchar(20),email varchar(20),class_id…...

MOSFET和IGBT栅极驱动器TLP250H(D4-TP1,F)电路的基本原理

TLP250H&#xff0c;TLP250H(D4-TP1,F)是SOP8封装中的光电耦合器&#xff0c;由GaA组成ℓ作为红外发光二极管&#xff08;LED&#xff09;光学耦合到集成的高增益、高速光电探测器IC芯片。它在高达125℃的温度下提供有保证的性能和规格. TLP250H具有内部法拉第屏蔽&#xff0c;…...

Vue - Syntax Error: TypeError: this.getOptions is not a function 项目运行时报错,详细解决方案

报错问题 关于此问题网上的教程都无法解决,如果您的报错与本文相似,本文即可 100% 完美解决。 在 vue2.js 项目中,执行 npm run serve 运行时出现如下报错信息, Syntax Error: TypeError: this.getOptions is not a function 解决方案 按照以下步骤,即可完美解决。 这个错…...

C 语言类型转换

C 语言类型转换 类型转换允许我们将一种数据类型转换为另一种数据类型。在C语言中&#xff0c;我们使用强制转换运算符进行类型转换&#xff0c;用&#xff08;type&#xff09;表示。 语法&#xff1a; (type)value;注意&#xff1a;始终建议将较低的值转换为较高的值&…...

数据结构-链表的简单操作实现

目录 0.链表前序工作 1.构建出一个链表 2.展示链表中的所有存储数据 3.查找关键字key是否在链表中 4.求链表的长度 5.头插法 6.尾插法 7.插入任意位置&#xff08;规定第一个元素位置为0下标&#xff09; 8.删除第一次出现的值为key的关键字 9.删除所有值为key的关键字…...

竞赛选题 深度学习手势识别 - yolo python opencv cnn 机器视觉

文章目录 0 前言1 课题背景2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存 5 模型训练5.1 修…...

【算法练习Day42】买卖股票的最佳时机 III买卖股票的最佳时机 IV

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 买卖股票的最佳时机 III买卖…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...