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

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.xdnf.cn/news/1541798.html

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

相关文章

在线教程丨1 步生成 SOTA 级别图像,Hyper-SD 一键启动教程上线!

近年来,扩散模型在文生图任务中得到了广泛的应用,但其在实现高质量图像生成的过程中,通常需要多步推理进行去噪,这显然大大增加了计算资源成本。 针对于此,研究人员引入蒸馏算法,推出了扩撒感知蒸馏算法来…

超实用的 Typora 插件

🌼📚Typora 是一款高效、易用且跨平台的 Markdown 编辑器和阅读器,其具有小巧、快速、实时预览等特点,非常受大家的欢迎。今天给大家推荐一款如虎添翼的 Typora 插件(Typora Plugin),它可以通过插件增强 Typora 的功能…

什么是调制?FM 和 AM 有什么区别?

来源:https://www.bilibili.com/video/BV1pp411d7Zg/?spm_id_fromautoNext&vd_source7a1a0bc74158c6993c7355c5490fc600 一张图说明一切 原因:低频信号传输距离很近,高频信号传输距离较远。 为了把低频信号传出去,需要把低…

【数据结构C语言】【入门】【首次万字详细解析】入门阶段数据结构可能用到的C语言知识,一章让你看懂数据结构!!!!!!!

前言:欢迎各位光临本博客,这里小编带你直接手撕入门阶段的数据结构的C语言知识,让你不再看见数据结构就走不动道。文章并不复杂,愿诸君耐其心性,忘却杂尘,道有所长!!!&am…

图片马赛克处理(Java)

1.需求 给图片的指定区域打码给整张图片打码马赛克方格取色支持中心点取色和随机取色马赛克支持灰度处理 2.源码 package com.visy.utils;import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOE…

我们如何通过两个关键测试原则,进行自动化 Kubernetes 配置和Secret测试

现如今,一个上规模的应用程序几乎都会使用 Kubernetes 作为管理环境实现自动扩展、负载平衡(auto scaling, load balancing )等机制。与之相应的,我们通常会使用一个 repository 专门管理一个组织内部各项不同应用程序在各个环境的…

领夹麦克风怎么样,无线领夹麦克风哪个牌子好,家用麦克风推荐

​作为消费类电子产品,麦克风随着市场需求和技术进步,每年都有新产品系列涌现,特别是领夹麦克风,近年来经历了显著的市场变革和技术突破。从早期的新闻采访、节目录制和影视后期录音中常用的无线小蜜蜂话筒,到如今在网…

如何选择公司

前言: 了不起学弟:学长啊,我这手上有几个offer,有几家不同种类的公司,我这该怎么选啊。。。 了不起:这确实是在正在找工作的同学一定会遇到的问题,如何选择公司。那我就给你讲一讲吧。 正文&…

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

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

u-code-input结合u-keyboard实现支付密码+数字键盘

u-code-input结合u-keyboard实现支付密码数字键盘 一、需求描述、框架(一)技术框架(二)需求 二、效果图三、代码实现(一)u-code-input组件小改造(二)功能实现 一、需求描述、框架 &…

java 异常-Exception

异常的概念 Java 语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常) 执行过程中所发生的异常事件可分为两大类 (1)Error(错误):Java 虚…

[Python]案例驱动最佳入门:股票分析 Python数据分析与可视化实战

在股票市场中,价格波动和投资决策紧密相连。通过数据分析,投资者可以识别市场趋势、价格波动背后的规律,并做出明智的投资决策。Python凭借其强大的数据处理和可视化功能,在金融市场分析中被广泛应用。本文将通过一个假设的股票市…

MySQL基础基础篇 - SQL

01 SQL通用语法 02 SQL分类 03 DDL语句 04 DML语句 05 DQL语句(单表查询) 05_01 学习总览 05_02 基本查询 05_03 条件查询 【应用实例】: 05_04 聚合函数 05_05 分组查询 05_06 排序查询 05_07 分页查询 【boss题目】: 05_08 执行顺序 06 DCL语句 【概…

如何设计出一个比较全面的测试用例

目录 1. 测试用例的基本要素(不需要执行结果) 2. 测试用例的给我们带来的好处 3. 用例编写步骤 4. 设计测试用例的方法 4.1 基于需求进行测试用例的设计 4.2 具体的设计方法 1.等价类 2.边界值 3.判定表(因果图) 4.正交表法 5.场景设计法 6.错误猜测…

JavaSE——String类

一、字符串构造 注意:String是引用类型,内部并不存储字符串本身。 有三种方式: public class Test1 {public static void main(String[] args) {// 使用常量串构造String s1 "hello java";System.out.println(s1);// 直接newSt…

20240921全国计算机二级Python考试(大头博士计算二级)

一、背景需求: 20240921我在上海应用技术大学44号楼考场参加2024年9月的全国计算机二级(Python语言程序设计)考试。 时隔多年,再次来到大学校园,恍若隔世 扫码找考场在哪里 考场须知 1、进考场,先刷身份证…

局域网内远程桌面怎么设置?3个远程桌面2个小技巧搞定!

在局域网内设置远程桌面,主要可以通过Windows系统自带的远程桌面功能来实现。 同时也可以借助一些专业的远程桌面软件来增强功能和安全性。 以下是详细的设置步骤及两个小技巧: 一、Windows系统自带远程桌面设置 1.启用远程桌面 在被控制的电脑上&am…

剑指offer JZ54 二叉搜索树的第k个节点

描述: 给定一棵结点数为n 二叉搜索树,请找出其中的第 k 小的TreeNode结点值。 1.返回第k小的节点值即可 2.不能查找的情况,如二叉树为空,则返回-1,或者k大于n等等,也返回-1 3.保证n个节点的值不一样 如…

李宏毅机器学习2023HW12—Reinforcement Learning强化学习

文章目录 TaskBaselineSimpleMedium Baseline—Policy GradientStrong Baseline——Actor-CriticBoss Baseline—Mask Task 实现深度强化学习方法: Policy GradientActor-Critic 环境:月球着陆器 Baseline Simple 定义优势函数(Advantage function)为执行完ac…

C++之Person类

首先设置头文件&#xff0c;将题目中的要求完成。 #include <iostream>using namespace std;class Person { public:Person();Person(string name, int id, string address);~Person();void setPerson(string name, int id, string address);void setName(string name);…