当前位置: 首页 > 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买卖…...

Sunshine游戏串流:构建个人云游戏平台的完整指南

Sunshine游戏串流&#xff1a;构建个人云游戏平台的完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 在当今数字娱乐时代&#xff0c;游戏串流技术正改变着人们享受游戏的方…...

终极OBS多平台直播插件指南:obs-multi-rtmp一键同步推流到所有平台

终极OBS多平台直播插件指南&#xff1a;obs-multi-rtmp一键同步推流到所有平台 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否曾在直播时面临这样的困境&#xff1a;想要同时在B…...

KeymouseGo终极教程:5分钟掌握免费开源自动化工具,告别重复工作!

KeymouseGo终极教程&#xff1a;5分钟掌握免费开源自动化工具&#xff0c;告别重复工作&#xff01; 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mir…...

2026年护理学论文降AI工具推荐:护理研究和临床实践部分降AI方案

2026年护理学论文降AI工具推荐&#xff1a;护理研究和临床实践部分降AI方案 直接给结论&#xff1a;嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;&#xff0c;4.8元&#xff0c;知网AI率58%降到5.9%&#xff0c;稳定可靠。 护理学论文降AI工具怎么选、怎么用&#xf…...

别让防火墙背锅了!银河麒麟V10外设管理的3个隐藏设置与1个必查命令

银河麒麟V10外设管理进阶指南&#xff1a;精准运维的3个关键策略与1个核心诊断工具 在国产操作系统逐步替代的浪潮中&#xff0c;银河麒麟V10凭借其安全稳定的特性&#xff0c;正成为越来越多政企机构的首选。但当我们从Windows生态迁移到这套国产平台时&#xff0c;外设管理—…...

如何用TouchGal构建纯净的Galgame社区平台?

如何用TouchGal构建纯净的Galgame社区平台&#xff1f; 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 在Galgame爱好者日益增长的今…...

双系统党福音:Win11+Ubuntu22.04双硬盘分区方案,保姆级避坑指南(含RTX4090驱动)

双硬盘双系统实战&#xff1a;Win11与Ubuntu22.04完美共存方案&#xff08;含RTX4090驱动优化&#xff09; 当高性能显卡遇上双系统需求&#xff0c;许多开发者都会面临一个两难选择&#xff1a;既想保留Windows的娱乐兼容性&#xff0c;又需要Ubuntu的高效开发环境。本文将彻底…...

从双11到某省政务平台:信息系统架构的本质思考

从双11到某省政务平台&#xff1a;信息系统架构的本质思考 一、架构不是设计出来的&#xff0c;是长出来的 某电商巨头今天的架构&#xff0c;是业务增长、填坑、拆分、迭代的结果&#xff0c;不是一开始就"神设计"。 核心技术底座大量依赖开源产品&#xff08;K8s 等…...

Steam游戏趋势数据获取与分析:基于MCP协议的自动化工具实践

1. 项目概述&#xff1a;一个洞察游戏市场的“数据雷达”如果你和我一样&#xff0c;既是一名游戏玩家&#xff0c;又对游戏市场的动态保持着职业敏感&#xff0c;那么你一定有过这样的时刻&#xff1a;想知道最近Steam上什么游戏突然火了&#xff1f;哪些独立游戏正在悄然崛起…...

KaibanJS与Serper API集成:构建智能实时搜索系统

1. 项目概述&#xff1a;KaibanJS与Serper的强强联合 在构建多智能体AI系统时&#xff0c;实时获取可靠的外部数据是提升系统智能水平的关键。KaibanJS作为一个新兴的多智能体开发框架&#xff0c;通过与Serper&#xff08;专业的Google搜索API&#xff09;的深度集成&#xff…...