Spring、SpringMVC

一、Spring框架中的单例Bean是线程安全的吗?

【默认单例的情况下】Spring Bean并没有可变的状态(如Service类和DAO类),即只能查不能改,所以没有并发问题,所以某种程度上来说Spring的单例Bean是线程安全的。

回答

Spring框架中有一个@Scope注解,默认为单例。因此当Spring的Bean中都是注入无状态的对象,没有线程安全问题,但如果在Bean中定义了可修改的成员变量如上述的count变量,从JVM角度看它本身属于方法区,即线程共享的区域中,将来多个请求发来,多个线程是共享的,所以存在问题。

当然如果注册为Bean的字段本身也是可变的【除了Service、DAO等其他的】,也存在线程安全问题,因为Bean默认为单例的,我们可以将其改为多例或者加同步锁。

只要成员变量是不可修改的,则这个Bean是线程安全的,如果成员变量是可修改的,则可能有线程安全问题。

二、SpringMVC的执行流程

前后端分离架构:【接口开发、异步】

请求到DisPatcherServlet,还有一个过程,首先由tomcat的连接器监听到请求,处理参数给容器,通过映射一级级找到dispatcherServlet

用户发送的请求统一由前端控制器(DispatcherServlet统一拦截),交给处理器映射器

【负责将请求映射到对应的处理器(Controller方法),存放在一个map中】

找到了之后将方法名和handler封装为处理器执行链给前端控制器

前端控制器知道了这个请求的方法,直接将请求交给处理器适配器【作用是解析参数,因为每个请求,参数类型不一样,有基基本类型、引用类型、路径参数等等…】,处理器适配器处理好了参数之后,再将请求发给处理器Handler【一般对应的controller都有@ResponseBody注解,即将返回结果转换为JSON并响应】

处理器执行链包括了哪些东西?

  1. 处理器对象:即具体的 Controller 类中的处理器方法。
  2. 处理器拦截器(Handler Interceptor):处理器拦截器可以在处理器方法执行前、执行后,或之前和之后执行一些共同的逻辑,比如权限验证、日志记录等。
  3. 处理器方法:即处理请求的具体方法。

当请求到达前端控制器(DispatcherServlet)后,前端控制器会通过处理器映射器找到对应的处理器,并返回一个处理器执行链,包括了以上所述的元素。处理器执行链将负责依次执行处理器拦截器的前置处理、处理器方法的执行以及处理器拦截器的后置处理。

处理器拦截器的作用:

处理器拦截器与处理器执行链密切相关,处理器执行链中的处理器拦截器可以在请求进入处理器方法之前和处理器方法执行之后实施拦截逻辑。通过处理器拦截器,我们可以实现一些通用的逻辑,而不需要在每个处理器方法中重复编写。

处理器执行链中包含了处理器对象和处理器方法【包含了具体的执行逻辑】,那为什么还要最终交给处理器Handler来执行处理器方法?

处理器适配器的作用是将处理器对象(Controller)转换为处理器(Handler)的形式,然后执行其中的方法以处理请求。处理器适配器知道如何调用不同类型的处理器对象,并处理返回值以生成最终的响应给前端控制器。

因此,虽然处理器执行链中包含了处理器方法,但最终还需要通过调用处理器对象和处理器适配器来执行具体的处理器方法,从而完成请求的处理过程。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mybatis 跨库查询 mysql

跨库,表关联的查询,实现起来很简单: select a.uid from ucenter.user a , database user_profile b where a.uid b.uid;只要在表的前边加上库名即可。 这个是我项目中xml 中的一个例子,项目采用的是springmvc,持久层框架就是my…

怎么在电脑上设置提醒事项,并显示在桌面上?

有时候,生活的琐碎与工作的繁忙交织成一张巨大的网,让我在其中穿梭而时常感到力不从心。那次重要的会议,我竟然忘记了准备资料,尴尬地站在会议室门口,心跳如鼓,那种因为遗忘而产生的挫败感,仿佛…

Android Studio 查看打开Room数据库数据

关于作者: CSDN内容合伙人、技术专家, 从零开始做日活千万级APP,带领团队单日营收超千万。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业化变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览…

Web界面加持!数据库备份神器,助你轻松备份数据!

使用这款带有Web界面的数据库备份神器,你可以轻松设置定时备份,确保数据安全无忧。备份结果即时通知,让你随时掌握备份状态。备份完成后,你将收到备份结果通知。无论是成功备份还是出现错误,你都能及时了解备份情况&am…

DRF 纯净版创建使用

【一】介绍 (1)使用原因 在Django中,contrib 包包含了许多内置的app和中间件,如auth、sessions、admin等,这些app在创建新的Django项目时默认是包含在内的。然而,在开发RESTful API时,可能不需…

使用vant-ui+vue3实现一个可复用的评星组件

如图所示 有两种情况 一种是5颗星 一种是3颗星 官网上只提供了图标类型的 并没有加文字 https://femessage-vant.netlify.app/#/zh-CN/ 自己结合两种情况 在全局注册了此组件(后续还会持续更新代码~) <template><div class"vant_rate_wrapper"><van…

requestAnimationFrame请求动画帧

一、前言 在Web应用中&#xff0c;实现动画效果的方法比较多&#xff1a; CSS3&#xff1a;Transition&#xff08;过度&#xff09; / Animation&#xff08;动画&#xff09; HTML5&#xff1a;Canvas JavaScript&#xff1a;setInterval&#xff08;定时器&#xff09; /…

2010年认证杯SPSSPRO杯数学建模D题(第一阶段)服务网点的分布全过程文档及程序

2010年认证杯SPSSPRO杯数学建模 D题 服务网点的分布 原题再现&#xff1a; 服务网点、通讯基站的设置&#xff0c;都存在如何设置较少的站点&#xff0c;获得较大效益的问题。通讯基站的覆盖范围一般是圆形的&#xff0c;而消防、快餐、快递服务则受到道路情况和到达时间的限…

答辩PPT制作太费时?AI工具帮你节省时间

在我原本的认知里面&#xff0c;答辩PPT是要包含论文各个章节的&#xff0c;在答辩时需要方方面面都讲到的&#xff0c;什么摘要、文献综述、实证分析、研究结果样样不落。但是&#xff0c;这大错特错&#xff01; 答辩PPT环节时长一般不超过5分钟&#xff0c;老师想要的答辩P…

2024美国虚拟信用卡申请流程

一、消费场景 二、如果申请 Fomepay美国虚拟信用卡 1.打开 Fomepay官方网站地址 2、登录之后根据自己的需求选择卡bin 3、点击申请卡&#xff0c;选择金额、填写姓名&#xff0c;选择微信/支付宝点击确认开卡即可 记得刷新页面哦~~~~~ 卡信息在卡中心cvc安全码里面 4、虚拟信…

DRF渲染之异常处理

异常处理 【1 】引言 Django REST Framework 这个就是我们常常说的DRF APIView的dispatch方法&#xff1a; 当请求到达视图时&#xff0c;DRF 的 APIView 类会调用 dispatch 方法来处理请求。在 dispatch 方法中&#xff0c;有一个关键的步骤是处理异常。如果在视图类的方法…

mikefile函数与实用模板

文章目录 0.概述1.函数调用语法2.字符串处理函数2.1 subst&#xff08;字符串替换函数&#xff09;2.2 patsubst&#xff08;模式字符串替换函数&#xff09;2.3 strip&#xff08;去空格函数&#xff09;2.4 findstring&#xff08;查找字符串函数&#xff09;2.5 filter&…

Aigtek:电压放大器的选型标准是什么

选型电压放大器时&#xff0c;需要考虑多个因素&#xff0c;以确保选择适合特定应用需求的设备。电压放大器该怎么选择&#xff0c;下面安泰电子来介绍电压放大器常见的选型标准。 增益要求&#xff1a;首先需要确定所需的增益水平。根据输入信号的幅度和输出信号的要求&#x…

只需3步,使用Stable Diffusion无限生成AI数字人视频(附安装包)

基本方法 搞一张照片&#xff0c;搞一段语音&#xff0c;合成照片和语音&#xff0c;同时让照片中的人物动起来&#xff0c;特别是头、眼睛和嘴。 语音合成 语音合成的方法很多&#xff0c;也比较成熟了&#xff0c;大家可以选择自己方便的&#xff0c;直接录音也可以&#…

【ZZULI数据结构实验】压缩与解码的钥匙:赫夫曼编码应用

&#x1f4c3;博客主页&#xff1a; 小镇敲码人 &#x1f49a;代码仓库&#xff0c;欢迎访问 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f30f; 任尔江湖满血骨&#xff0c;我自踏雪寻梅香。 万千浮云遮碧…

大文件传输的好帮手Libarchive:功能强大的开源归档文件处理库

在数字化时代&#xff0c;文件的存储和传输对于企业的日常运作至关重要。但是&#xff0c;服务器中的压缩文件往往无法直接查看或预览&#xff0c;这给用户带来了不便。为了解决这一问题&#xff0c;在线解压功能的开发变得尤为重要。接下来&#xff0c;小编将介绍一个能够实现…

了解集合与数据结构(java)

什么是数据结构? 数据结构就是 数据结构, 功能就是描述和组织数据 比如我有10万个QQ号, 我来组织, 有很多种组织方法, 比如链表, 树, 堆, 栈等等. 假如QQ号要查找数据, 有种数据结构查找数据速度很快, 我们就用它 加入QQ号要进行删除数据, 有种数据结构删除速度很快, 我们…

Spring Cloud Alibaba 网关 Gateway 集成(7)

项目的源码地址 Spring Cloud Alibaba 工程搭建&#xff08;1&#xff09; Spring Cloud Alibaba 工程搭建连接数据库&#xff08;2&#xff09; Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用&#xff08;3&#xff09; Spring Cloud Alibaba Ribbo…

【Web】CTFSHOW 月饼杯 题解(全)

目录 web1_此夜圆 web2_故人心 web3_莫负婵娟 web1_此夜圆 拿到源码&#xff0c;一眼字符串逃逸 本地测一测&#xff0c;成功弹出计算器 <?phpclass a {public $uname;public $password;public function __wakeup(){system(calc);} }function filter($string){retur…

【北京迅为】《iTOP-3588从零搭建ubuntu环境手册》-第5章 安装SSH

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…