此框架你到底了解多少???

news2024/11/14 17:20:45

1.简述对Spring中IOC/DI的理解

IOC:控制反转,将创建和管理的对象的任务交给外部的Spring容器

DI:依赖注入,对象之间存在依赖关系,创建对象时,对其依赖的对应直接进行赋值

2.有哪些依赖注入的方式

基于注解

基于构造器

基于set方法

3.@Resource和@Autowired的区别

@Resource 会根据 bean 的名称进行注入。如果名称不存在,根据类型注入。

如果属性指定名称,只能根据名称注入

@Autowired 会按类型进行注入,如果一个接口有多个实现类,则需要配合 @Qualifier 注解来明确指定具体的 bean。

4.Spring bean如果出现循环依赖,如何解决

循环依赖,a中引用自身;a引用b,b引用a;a引用b,b引用c,c引用a

SpringBoot2.6.0之前,Spring内部有解决依赖的机制(三级缓存,不针对构造器注入)

2.6.0后,如果出现循环依赖,会报错,可以通过yml配置,开启支持循环依赖

不使用自带的三级缓存机制,也可以解决循环依赖,使用@Lazy(针对注解注入、构造器注入都可解决)

@Lazy****注解:使用@Lazy注解延迟加载依赖项,打破循环依赖。通过延迟初始化,避免了在创建Bean时直接依赖于尚未完成初始化的Bean。

使用@PostConstruct和@PreDestroy:将Bean的初始化和销毁逻辑放在这两个方法中,避免在构造函数中直接引用其他Bean,从而减少循环依赖的可能

5.简述对事务传播特性的理解

使用Spring事务的方法之间,互相调用时,事务如何传播

默认REQUIRED,如果两个方法都使用REQUIRED,进行事务合并,

若A报异常,A和B的数据都会回滚

如果一个方法A使用REQUIRED,另一个方法B使用REQUIRED_NEW,事务相互独立

若A报异常,A的数据会回滚,不会影响B

6.spring中,事务什么情况下会失效,以及如何解决

方法中的逻辑抛出异常后,在方法中捕获并处理异常

方法中抛出运行时异常,@Transactional(rollbackFor = Exception.class)

在同一类中,如果a方法没有事务,b方法使用事务,a直接调用b方法,b方法报错后,

b中数据不会回滚,注入自身的对象来调用b方法

事务传播行为不当;

确保所有需要事务支持的方法都使用正确的传播行为,例如 PROPAGATION_REQUIRED。

异步调用;

使用 @Async 注解时,确保事务上下文正确传递

7.简述spring bean对象的生命周期

Bean的实例化

给bean的属性进行赋值

把bean的实例化传递给bean的后置处理器的前置方法

如有@PostConstruct修饰的方法,会在初始化方法前执行

执行初始化方法

把bean的实例化传递给bean的后置处理器的后置方法

得到完整的bean对象,此时bean对象才能使用

销毁bean

8.@PostConstructor和@PreDestroy的作用

@PostConstruct:修饰Spring bean的初始化方法

@PreDestroy:修饰Spring bean的销毁方法

在 Bean 被销毁之前执行的方法。用于清理资源或执行清理操作,如关闭连接或释放占用的资源。

9.@RequestBody和@ResponseBody的作用

@RequestBody作用是将前端传来的json格式的数据转为自己定义好的javabean对象

@ResponseBody作用是将后端以return返回的javabean类型数据转为json类型数据

10.@DateTimeFormat和@JsonFormat的作用

@DateTimeFormat 针对json数据,将日期字符串转为日期对象

主要用于 Spring MVC 中的日期时间格式化,确保请求和响应中的日期时间数据格式正确。

@JsonFormat 针对json数据,实现日期字符串和日期对象的互相转换

JSON 数据序列化和反序列化过程中的日期时间格式化

11.@Value的作用

给对象的属性注入值,可以是常量值,也可以读取yml等配置文件中配置信息进行注入

12.@Configuration和@Bean的作用

@Configuration 修饰配置类,本质目的就是创建配置类的对象

用于定义配置类,它告诉 Spring 这个类包含一个或多个 @Bean 方法,这些方法将返回 Spring 容器中管理的 Bean 实例。

@Bean 修饰创建对象的方法,将创建的对象纳入Spring容器管理

它通常在 @Configuration 类中使用,用于创建和配置具体的 Bean 实例。

13.@PathVariable的作用

获取路径中的数据,将要赋值给控制器方法的参数

@GetMapping(“/user/{uid}”)

Public R userInfo(@PathVariable{“uid”} Integer id){}

绑定路径变量:将 URL 中的路径部分作为参数传递给控制器方法。

提取动态数据:通过 URL 中的路径变量来提取动态数据,如用户 ID、订单编号等。

14.Spring进行异常处理时,使用到的注解

@RestControllerAdvice 修饰全局异常类,返回json数据

@ExceptionHandler修饰处理异常的方法

@ResponseStatus

15.AOP底层实现的原理

反射+代理,Spring中有两种动态代理,jdk代理,cglib代理

Spring事务底层使用AOP技术实现

核心思想是在不修改现有代码的情况下添加新功能,从而降低代码间的耦合度。

16.AOP的通知类型 执行时机

前置通知 在目标方法调用之前

后置通知 在目标方法调用之后

环绕通知 在目标方法调用之前和之后

异常返回 在目标方法抛出异常之后

正常返回 在目标方法正常返回之后

17.Spring使用了哪些动态代理方式

jdk代理:Spring中针对实现接口的对象

cglib代理:针对任意对象,代理对象相当于目标对象的子类

18.SpringMVC的工作原理

在这里插入图片描述

19.拦截器包含的方法,及调用时机

preHandle() 访问目标控制器方法前

postHandle() 访问目标方法后渲染资源前

afterCompletion() 渲染资源后

20.过滤器和拦截器的区别

过滤器可以针对任意资源来进行过滤,包括静态资源(SpringMVC)

拦截器针对DispatchServlet匹配的资源进行拦截(SpringBoot)

21.SpringBean加载机制

Spring****上下文

配置元数据

Bean定义的读取

Bean的实例化

依赖注入

初始化回调

Bean的生命周期管理

单例和多例模式

BeanFactory与FactoryBean的区别 以及BeanFactory的理解

22.项目中使用了哪种日志框架

Logback SpringBoot自带的

Log4j

Log4j2

SLF4J 不是一个真正的日志实现,而是一个简单日志门面,可以让你的应用程序在部署时使用不同的日志框架。它通过绑定不同的日志实现来达到这个目的,比如 Logback 或 Log4j。

23.针对日志如何处理的?

我们项目中使用log4j2处理日志,日志存储到文件中或者日志存储es中,通过elk进行日志处理(其他方式,filebeat+kafka+elk/kafka+elk)后台提供页面可以查询日志,另外配置报警机制,报异常后,会有邮件或短信提醒

24.springboot实现自动装配的原理

@EnableAutoConfiguration扫描jar包中meta inf目录,有配置文件,里面存储的需要自动装配的类

25.你知道哪些安全框架?安全框架的主要作用是什么?

Spring Security/shiro/satoken

主要作用:认证和授权

认证:判断是否是合法用户

授权:认证后,判断用户是否有权限操作相应的功能

26.什么是rbac

基于角色访问控制

五表结构:用户表、角色表、权限表、用户角色对应关系表、角色和权限对应关系表

27.spring的核心功能有哪些

,有配置文件,里面存储的需要自动装配的类

25.你知道哪些安全框架?安全框架的主要作用是什么?

Spring Security/shiro/satoken

主要作用:认证和授权

认证:判断是否是合法用户

授权:认证后,判断用户是否有权限操作相应的功能

26.什么是rbac

基于角色访问控制

五表结构:用户表、角色表、权限表、用户角色对应关系表、角色和权限对应关系表

27.spring的核心功能有哪些

IOC、DI、AOP、事务、方便的整合第三方框架

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】详解UDP套接字网络字节序IP地址端口号

一、网络字节序 我们已经知道, 内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之分. 发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出; 接收主机把从网络上接到…

软考中级软设背诵内容

冯诺依曼结构、哈佛结构 冯诺依曼结构: 程序指令和数据都采用二进制表示 程序指令和数据在同一个存储器中混合 程序的功能都由中央处理器(CPU)执行指令来实现 程序的执行工作由指令进行自动控制 SRAM、DRAM 与DRAM相比,SRAM集成率低、功…

页面布局实现-左侧横向滑动展示隐藏数据,右侧固定展示操作按钮。可上下滑动联动

效果图 1.布局排版 <LinearLayoutandroid:layout_width"match_parent"android:layout_height"match_parent"android:orientation"vertical"android:padding"1dp"><LinearLayoutandroid:id"id/lltList"android:lay…

Java:Clonable 接口和拷贝

一 Clonable 接口 在 Java SE 中&#xff0c;Cloneable 是一个标记接口&#xff08;Marker Interface&#xff09;&#xff0c;它位于 java.lang 包中。这个接口的主要目的是标识实现该接口的类能够被合法地克隆&#xff08;即可以调用 Object 类中的 clone() 方法&#xff09…

Electron应用程序打包后运行报错cannot find module ‘@vue/cli-service‘

本项目打包运行后报错问题的解决办法&#xff0c;类似于其他cannot find module XXX’的报错&#xff0c;也基本可以解决 文章目录 electron应用程序打包后运行报错排查问题解决办法 electron应用程序打包后运行报错 错误如下&#xff1a; 提示找不到该模块 排查问题 本项…

互联网广告产品基础知识

一 计价与效果 广告产品如何估算收入&#xff1f; 一种是从需求侧计算&#xff1a;按照广告主数量进行拟合&#xff1b;一种是从供给侧计算&#xff1a;按照曝光量和千次曝光单价进行拟合。 需求侧 从需求侧&#xff0c;也就是广告主侧&#xff0c;来计算广告产品的总收入&…

Linux命令:用于创建新的用户组的命令行工具groupadd 详解

目录 一、概述 二、组标识符GID 1、定义 &#xff08;1&#xff09;标识符 &#xff08;2&#xff09;与UID的关系 2、GID的作用 &#xff08;1&#xff09;用户组管理 &#xff08;2&#xff09;文件权限控制 &#xff08;3&#xff09;用户权限管理 &#xff08;4&…

threejs性能优化之gltf文件压缩threejs性能优化之glb文件压缩

在使用Three.js进行3D图形开发时&#xff0c;GLTF&#xff08;GL Transmission Format&#xff09;文件因其高效性和灵活性而广受欢迎。然而&#xff0c;随着模型复杂度的增加&#xff0c;GLTF文件的大小也会显著增加&#xff0c;这可能会对加载时间和渲染性能产生负面影响。为…

插入与冒泡排序(C++)

\一、插入排序 1 简介 插入排序&#xff0c;也称为直接插入排序&#xff0c;其排序思想和我们平时打扑克牌时排序类似。 2 算法步骤 将第一个元素看作已排序序列&#xff0c;第二个到最后一个看作未排序序列。 第二个元素&#xff0c;与之前已排序号的序列进行对比&#x…

【我的 PWN 学习手札】tcache stash with fastbin double free —— tcache key 绕过

参考看雪课程&#xff1a;PWN 探索篇 前言 tcache key 的引入使得 tcache dup 利用出现了困难。除了简单利用 UAF 覆写 key 或者House Of Karui 之外&#xff0c;还可以利用 ptmalloc 中的其他机制进行绕过。 一、Tcache Stash with Fastbin Double Free 之前是 double free …

软考中级软件设计师——知识产权学习记录

软考中级软件设计师——知识产权 著作权人身权著作财产权著作权侵权行为 计算机软件著作权基本知识计算机软件著作权侵权 专利地域性与专利权申请基本知识专利权侵权 职务作品委托开发商业秘密权基本知识商业秘密侵权 商标权与商标注册基本知识商标权侵权 著作权 著作权也称为…

Spring的任务调度

Spring的任务调度 1.概述 Spring框架为任务调度提供了专门的解决方案。在Spring框架的org.springframework.scheduling包中&#xff0c;通过对JDK 的ScheduledExecutorService接口的实例进行封装&#xff0c;对外提供了一些注解和接口&#xff0c;为开发者处理定时任务提供了…

网安面试会问到的:http的长连接和短连接

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

探索 Python 的火焰:Fire 库的神秘力量

文章目录 &#x1f525; 探索 Python 的火焰&#xff1a;Fire 库的神秘力量第一部分&#xff1a;背景介绍第二部分&#xff1a;Fire 库是什么&#xff1f;第三部分&#xff1a;如何安装 Fire&#xff1f;第四部分&#xff1a;简单库函数使用方法第五部分&#xff1a;场景应用第…

32.递归、搜索、回溯之floodfill算法

0.简介 1.图像渲染 . - 力扣&#xff08;LeetCode&#xff09; 题目解析 算法原理 代码 class Solution {int[] dx { 0, 0, 1, -1 };int[] dy { 1, -1, 0, 0 };int m, n;int prev;public int[][] floodFill(int[][] image, int sr, int sc, int color) {if (image[sr][sc]…

yolov5足球运动分析-速度分析-足球跟踪

足球分析项目 引言 在现代体育分析领域&#xff0c;利用先进的计算机视觉技术和机器学习模型对比赛视频进行深入解析已成为一种趋势。本项目旨在通过YOLO&#xff08;You Only Look Once&#xff09;这一顶级的人工智能目标检测模型来识别并跟踪足球比赛中的球员、裁判以及足球…

【每日一题】LeetCode 2374.边积分最高节点(图、哈希表)

【每日一题】LeetCode 2374.边积分最高节点&#xff08;图、哈希表&#xff09; 题目描述 给定一个有向图&#xff0c;图中包含 n 个节点&#xff0c;节点编号从 0 到 n - 1。每个节点都有一个出边&#xff0c;指向图中的另一个节点。图由一个长度为 n 的整数数组 edges 表示…

江协科技STM32学习- P15 TIM输出比较

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

6张图掌握提示词工程师工作范围与工作技巧(提示词原理篇)

在人工智能的疆域中&#xff0c;提示词工程师扮演着至关重要的角色。他们精心设计的话语&#xff0c;是引导AI模型理解人类需求、激发创造力的关键。如同指挥官的号令&#xff0c;提示词工程师的每一个提问&#xff0c;都让AI的潜力得到释放&#xff0c;让技术与智慧的对话更加…

如何有效检测住宅IP真伪?

在当今的互联网时代&#xff0c;住宅IP&#xff08;即家庭用户通过宽带服务提供商获得的IP地址&#xff09;在跨境电商、广告投放、网络安全等多个领域扮演着重要角色。然而&#xff0c;随着网络环境的复杂化和欺诈行为的增多&#xff0c;如何有效检测和辨别住宅IP的真伪成为了…