Spring复习-问题回答

1.什么是 spring,你对 spring 的理解?

Spring是一个轻量级,非侵入式的(不使用框架特定的类,感受不到框架)IOC和AOP一站式的java后端开发框架,简化企业开发。

2.spring 的优缺点

优点:

Spring是一个容器,可以管理对象(IOC);

创建对象和使用对象分离,降低耦合度;

使用AOP思想可以更加方便地扩展功能;

可以集成其他框架;

缺点:

配置繁琐

依赖jar太多

3.解释一下 IOC 和 AOP

IOC:

控制反转(Inverse of Control),将创建对象的权利反转给Spring框架,使用对象时,只需要从Spring容器中获取,不用关系创建过程。

AOP:

面向切面编程(Aspect Oriented Programming),   将程序中的非业务代码抽取,使非业务代码与业务代码相隔离,为目标类创建一个代理对象让代理对象调用目标类中的方法也就是非业务代码,提高了代码的复用率和灵活性,提高开发效率,降低了非业务代码与业务代码的耦合性。 应用场景:保存日志,权限管理,统一异常处理 ,事务管理。

4.IOC 和 DI 的区别是什么

IOC是一种设计思想,将对象的创建和组装交给容器管理;

DI是IOC的具体实现,通过依赖注入的方式实现对象之间的解耦,依赖注入可以通过构造函数、setter 方法或字段注入的方式实现。

spring框架:简介+依赖注入-CSDN博客

有详细举例 

5.spring 中注入对象的方式

XML配置文件

注解标签

6.自动注入的注解有哪些注解

  • @Autowired:由 Spring 提供
  • @Qualifier: 当有多个同一类型的 Bean 时,可以用@Qualifier(“name”)来指定。与@Autowired 配合使用.
  • @Resource:由 jdk提供

7.Springc 中的 bean 和 new 的对象由什么区别

bean是将对象的管理权限交给了Spring容器,而new对象是创建新的对象,需要手动管理其生命周期和依赖关系。

8.AOP 中的术语有哪些,通知有哪些

  1. 连接点(Joinpoint):类中可以被增强的方法(新增修改等);
  2. 切入点(pointcut):实际被增强的方法;
  3. 通知(Advice): 一个切面在特定的连接点要做的事情(方法被增强的功能),分为前置通知、后置通知、异常;
  4. 切面(Aspect):把通知添加到切入点的整个过程称为切面;
  5. 目标(Target): 代理的目标对象(连接点,切入点所在类);
  6. 代理(Proxy): 向目标对象应用通知时创建的代理对象。

9.Spring 实现 AOP 有哪几种方式

XML配置

注入

spring:AOP面向切面编程+事务管理_aop切面方法事务-CSDN博客

详细内容见上文。

10.谈谈 Spring 事务管理,实现方式有几种,原理是什么?

编程式:

声明式:注解和XML配置

Spring 事务管理的原理是基于 AOP 技术和 JDBC 事务 API 实现的。当应用程序中的方法被标记为需要事务管理时,在方法执行前,Spring 会创建一个代理对象,并在代理对象中织入事务管理的逻辑。当方法执行时,代理对象会自动开启事务、执行业务逻辑、提交或回滚事务,并在方法执行后释放连接,保证了数据库操作的完整性和一致性。事务管理的实现依赖于底层的数据源和JDBC 驱动,可以支持不同的事务管理方式和隔离级别。

11.声明式事务哪些场景下会失效

  • @Transactional 应用在非 public 修饰的方法上
  • 异常被 catch 捕获导致失效
  • 出现编译期异常
  • @Transactional 事务传播行为设置错误
  • 数据库引擎不支持事务
  • 同一个类中,使用非代理对象调用一个有事务的方法,导致事务错误

12.SpringWEB(springMVC)运行流程

DispatcherServlet的工作原理:

  1. 请求接收:当客户端发送一个HTTP请求时,DispatcherServlet会创建一个请求对象,并从中获取请求的URL路径、HTTP方法、请求头等信息。
  2. 请求映射:DispatcherServlet会使用HandlerMapping实例来根据请求的URL路径和HTTP方法来匹配一个或多个Handler实例。HandlerMapping实例负责将URL路径和HTTP方法映射到具体的Handler实例上。
  3. 请求解析:当一个Handler实例被选中后,DispatcherServlet会调用HandlerAdapter实例来解析请求,获取请求的参数、请求头等信息。
  4. 业务处理:当请求被解析后,Handler实例会调用业务逻辑来处理请求。这个过程通常由Controller类中的方法来完成。
  5. 视图渲染:当业务逻辑处理完成后,Handler实例会调用ViewResolver实例来选择一个合适的视图来生成HTTP响应。ViewResolver实例负责将业务逻辑的结果转化为HTML、XML等格式的视图内容。
  6. 响应生成:当视图被选择后,Handler实例会调用View类中的render方法来生成HTTP响应。这个过程通常包括设置响应头、生成响应内容等操作。
  7. 响应发送:当HTTP响应生成完成后,DispatcherServlet会将响应发送给客户端。这个过程通常由Servlet容器来完成。

13.spring 和 springboot 的关系区别

 SpringBoot是Spring的升级,简化Spring框架的搭建;SpringBoot的核心是:起步依赖,自动装配。

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

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

相关文章

STL第二讲

第二讲 视频标准库源码版本:gnu c 2.9.1/4.9/Visual C OOP vs GP GP是将datas与methods分开,OOP相反; 为什么list不能使用全局的sort? 因为sort源代码: *(first (last - first)/2) // 此迭代器只能是随机访问迭代…

AI智能视频监控系统-监控视频识别人员着装分析报警---豌豆云

随着经济的发展,城市化进程的推进,社会矛盾和暴力事件频发,安防监控系统的重要性越发突出。人工智能,尤其是只能视觉技术成为智能安防领域的大趋势。 从监控技术发展来看,大致可以分为三个阶段:人力现场监…

使用 Python 数据写入 Excel 工作表

在数据处理和报告生成等工作中,Excel 表格是一种常见且广泛使用的工具。然而,手动将大量数据输入到 Excel 表格中既费时又容易出错。为了提高效率并减少错误,使用 Python 编程语言来自动化数据写入 Excel 表格是一个明智的选择。Python 作为一…

WPF引用halcon的HSmartWindowControlWPF控件一加上Name属性就,无缘无故运行后报错

报错内容: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MC1000 未知的生成错误“Could not find assembly System.Drawing.Common, Version0.0.0.0, Cultureneutral, PublicKeyTokencc7b13ffcd2ddd51. Either explicitly load this assembly using a method …

【nginx实战】nginx正向代理、反向代理、由反向代理实现的负载均衡、故障转移详解

文章目录 一. 正向代理与反向代理的概念二. Nginx服务器的正向代理服务1. Nginx服务器正向代理服务的配置的3个指令1.1. resolver指令1.2. resolver_timeout指令1.3. proxy_pass指令 2. Nginx服务器正向代理服务的使用 三. Nginx服务器的反向代理服务1. 反向代理的基本指令1.1.…

docker使用笔记

最近在使用docker配置小米cyberdog2的环境,记录一下常用的命令,以备今后查阅。 0. 基本概念 Dockerfile:环境的配置信息,里面描述了你想要搭建的环境的信息。 Image(镜像):类比我们装虚拟机/操作系统时需要的系统镜像…

git本地分支的合并/切换分支时遇到的问题

目录 第一章、本地分支的切换测试1.1)切换之前的master分支下文件内容1.2)切换到develop分支后修改文件1.3)切回master分支出现报错: 第二章、解决方式2.1)方式1:commit提交修改2.2)方式2&#…

使用JGit操作git推送本地文件夹到远程仓库

springboot环境 1、pom.xml文件添加依赖 <dependency><groupId>org.eclipse.jgit</groupId><artifactId>org.eclipse.jgit</artifactId><version>6.5.0.202303070854-r</version></dependency> 2、实现代码 /*** 项目发布功…

设计模式—行为型模式之命令模式

设计模式—行为型模式之命令模式 命令&#xff08;Command&#xff09;模式&#xff1a;将一个请求封装为一个对象&#xff0c;使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通&#xff0c;这样方便将命令对象进行储存、传递、调用、增加与管理。 …

告别无法访问的Github

告别无法访问的Github 最近在使用github的时候又登不上去了&#xff0c;挂着VPN都没用 但是自己很多项目都存在github&#xff0c;登不上去那不得损失很大 所以一行必须整点儿特殊手段来访问&#xff0c;顺便分享一下 1.加速器 网上很多解决方案都是在分享各种加速器来登陆…

有效的括号[简单]

>优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串s&#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 【1】左括号必须用相同类型的右括号…

Python中的进制转换——bin/oct/hex函数与int函数

简介 进制转换可能是一个工作学习中的常见小任务&#xff0c;手写相关函数显然很麻烦。 Python有相关内置函数一般能满足我们的需求。bin()、oct()、hex()将十进制转换为常用的二、八、十六进制&#xff0c;而 int()函数可指定第二个参数从而将其它进制转换为十进制。或许后者…

春招冲刺第二天——SQL学习

春招冲刺第二天 前言 MySQL学习&#xff1a;哔哩哔哩参考视频&#xff1a; 【中字】SQL进阶教程 | 史上最易懂SQL教程&#xff01;10小时零基础成长SQL大师 第一章 Mysql安装 视频前三节有教程&#xff0c;或自行查阅&#xff0c;不做赘述 课程资料和数据库数据的网盘&…

第八篇 交叉编译华为云Iot SDK到Orangepi3B

本篇主要内容&#xff1a; 一、交叉编译华为云Iot SDK依赖1.宿主机安装交叉编译工具链&#xff08;1&#xff09;选择下载交叉编译工具链&#xff08;2&#xff09;解压、添加环境变量、重启2.交叉编译依赖库&#xff08;0&#xff09; 准备工作&#xff08;1&#xff09; 交叉…

【多商户开源-BSD- Fecmall 电商平台】

关于Fecmall Fecmall 关于&#xff0c;Fecmall介绍 Fecbbc开源BSD多商户系统&#xff0c;真正开源&#xff0c;商用免费授权的多商户系统 Fecmall系统简介&#xff1a; 全称为Fancy ECommerce Shop&#xff0c; 着重于电商架构的研发优化&#xff0c;全新定义商城的架构体系&…

Vue3 Cli5按需导入ElementPlus

1、安装环境 node&#xff1a;16.20.0 vue&#xff1a;3.2.36 vue/cli&#xff1a;5.0.0 element-plus&#xff1a;2.2.25 element-plus/icons-vue&#xff1a;2.0.10 unplugin-auto-import&#xff1a;0.16.1 // 当前环境用这个包&#xff0c;不然会提示各种错误 unplugin-vu…

《微信小程序开发从入门到实战》学习九十一

7.1 视图容器组件 7.1.2 scroll-view组件 scroll-view组件时是滚动的视图容器&#xff0c;可在竖直方向或水平方向上滚动&#xff0c;展示超出屏幕高度或宽度的内容。 使用竖直方向滚动时&#xff0c;需要通过wxss的height样式给scroll-view设置一个固定高度&#xff0c;超出…

在Spring Boot中使用ZXing开源库生成带有Logo的二维码

在上一篇文章的基础上&#xff0c;我们将进一步扩展功能&#xff0c;实现在生成的二维码中嵌入Logo图片。这样的二维码更具个性化和识别度。让我们逐步完成这个功能。 第一步&#xff1a;引入Logo图片 首先&#xff0c;准备一张用作Logo的图片&#xff0c;并确保它的大小适中…

HIS项目介绍、项目环境准备、版本控制介绍、Git基础、Git指针、Git分支、Git标签

案例1&#xff1a;项目环境准备 环境准备说明&#xff1a; 本阶段共使用虚拟机6台&#xff0c;操作系统使用RockyLinux8.6 环境准备要求&#xff1a; 最小化安装即可配置好主机名和IP地址搭建好yum源关闭防火墙和SELinux!!! 项目主机列表 主机名IP地址规格角色服务Progra…

上位机图像处理和嵌入式模块部署(windows opencv)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 opencv可以运行在多个平台上面&#xff0c;当然windows平台也不意外。目前来说&#xff0c;opencv使用已经非常方便了&#xff0c;如果不想自己编译…