若依framework模块解读,Java小白入门(六)

news2025/1/18 20:17:26
  • 切面编程我们单独作为一个章节进行了分析,这一节我们来看若依framework模块其他部分的内容,其中,关于安全的部分,这个章节暂时不深入,需要单独一个章节结合token认证等一起讨论。

配置 config

  • 这个也不需要多展开,比较清楚,让人觉得比较爽的是,各个配置可以直接用对应的类来描述,简介大方。其中关于数据源和重复提交配置是依赖以下几个文件

拦截器、过滤器、切片的区别

  • 这几个概念有些容易混,所以有必要深入一下,

过滤器,拦截器,切片可以取到数据的差别

  • 过滤器:可以拿到原始的HTTP请求和响应信息,拿不到处理请求的方法值信息。
  • 拦截器:可以拿到HTTP请求和响应信息,可以获取到拦截的类名称、方法名称,不能获取到方法参数,原因是在dispatcherservlet源码中,经过preHandle才对方法参数通过request里面开始处理拼接)。
  • 切片:可以拿到请求方法的传入参数值,拿不到原始的HTTP请求和响应的对象。

过滤器filter和拦截器Interceptor的区别

1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。过滤器可以修改request,而拦截器不能.

2、拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑。而过滤器是JavaEE标准,只需依赖servlet api ,不需要依赖spring。拦截器是属于spring的一个组件,因此可以使用spring的所有资源,对象,如service对象,数据源,事务控制等,而过滤器就不行。

3、过滤器的实现基于回调函数。而拦截器(代理模式)的实现基于反射,过滤器只能在请求的前后使用,而拦截器可以详细到每个方法,Filter还在servlet前后起作用。而拦截器能够深入到方法前后,异常抛出前后,因此拦截器具有更大的弹性,所有在spring框架中应该优先使用拦截器。

4、Filter是依赖于Servlet容器,属于Servlet规范的一部分,而拦截器则是独立存在的,可以在任何情况下使用。

5、Filter的执行由Servlet容器回调完成,而拦截器通常通过动态代理(反射)的方式来执行。

6、Filter的生命周期由Servlet容器管理,而拦截器则可以通过IoC容器来管理,因此可以通过注入等方式来获取其他Bean的实例,因此使用会更方便。

过滤器应用场景

1)过滤敏感词汇(防止sql注入)
2)设置字符编码
3)URL级别的权限访问控制
4)压缩响应信息

拦截器应用场景

1.登录验证,判断用户是否登录。

2.权限验证,判断用户是否有权限访问资源,如校验token

3.日志记录,记录请求操作日志(用户ip,访问时间等),以便统计请求访问量。

4.处理cookie、本地化、国际化、主题等。

5.性能监控,监控请求处理时长等。

6.通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现)

切片应用场景

  1. 事务管理
  2. 日志操作记录
  3. 异常处理
  4. 缓存(页面缓存,方法缓存/查询缓存,数据缓存(对Entity/数据记录进行缓存))
  5. 权限安全认证
  6. Persistence 持久化
  7. Synchronization 同步
  8. Lazy loading 懒加载
  9. 性能监控(方法执行时间/调用次数)

正常运行顺序为:filter-interceptor-controllerAdvice-aspect-controller

异常情况下:controller-aspect-controllerAdvice-interceptor-filter

Manager

  • 提供了异步任务管理器和异步工厂,这里并没有使用读写分离的技术,这个某种意义上一个目的
  • Shutdown Manager,学习这种严谨的方式 确保应用退出时能关闭后台线程

Web

  • web相关的信息, 比如cpu,jvm等,使用Service类来设置相关的cpu信息,内存,服务器,虚拟机等。
  • GlobalExceptionHandler 挺有价值,需要关注一下,了解 @RestControllerAdvice的注解意义,以及里面常见异常的处理,可能会修订。

各类web service ,其中 注解 的化名挺有意思

@Service("ss")
public class PermissionService
{

应用场景为 @PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')")

总结

框架的部分能够读懂,了解核心的内容即可,并不需要面面俱到,用到的时候能够想起来,并且知道如何用即可,毕竟技术那么多,我们精力那么有限,需要根据自己要解决的目标来学习技术,不然谁的脑袋也受不了那一坨坨的技术。

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

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

相关文章

io流——转换流

1 为什么需要转换流 为啥 乱码的原理 怎么解决? 1 让两边编码一样 2 使用转换流 2 转换流

推荐:一个不错的介绍Apache Doris的PPT

原来Apache Doris居然是百度开源出来的,不错。部分节选:完整下载地址网盘: 链接: https://pan.baidu.com/s/18WR70R_f72GxCjh0lykStQ 提取码: umd3 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v7的分…

猪目标检测数据集VOC格式600张

猪是一种常见的哺乳动物,通常被人们认为是肉食动物,但实际上猪是杂食性动物,以植物性食物为主,也有偶尔食肉的习性。猪的体型较大,圆胖的体型和圆润的脸庞使其显得憨态可掬。它们主要通过嗅觉来感知周围环境&#xff0…

信号与线性系统翻转课堂笔记16——离散LTI系统的各类响应

信号与线性系统翻转课堂笔记16——离散LTI系统的各类响应 The Flipped Classroom16 of Signals and Linear Systems 对应教材:《信号与线性系统分析(第五版)》高等教育出版社,吴大正著 一、要点 (1,重点…

云原生|kubernetes|kubernetes资源备份和集群迁移神器velero的部署和使用

前言: kubernetes集群需要灾备吗?kubernetes需要迁移吗? 答案肯定是需要的 那么,如何做kubernetes灾备和迁移呢?当然了,有很多的方法,例如,自己编写shell脚本,或者使用…

Elasticsearch 8.X进阶搜索之“图搜图”实战

Elasticsearch 8.X “图搜图”实战 1、什么是图搜图? "图搜图"指的是通过图像搜索的一种方法,用户可以通过上传一张图片,搜索引擎会返回类似或者相关的图片结果。这种搜索方式不需要用户输入文字,而是通过比较图片的视…

goframe v2 模板引擎的用法

这里用的goframe v2框架 提醒:下面的import 引入的控制器和api,根据自己实际项目路径 main函数 import ("context""github.com/gogf/gf/v2/net/ghttp""github.com/gzdzh/dzhgo/modules/dzhCms/controller/web""gith…

【三维目标检测/自动驾驶】IA-BEV:基于结构先验和自增强学习的实例感知三维目标检测(AAAI 2024)

系列文章目录 论文:Instance-aware Multi-Camera 3D Object Detection with Structural Priors Mining and Self-Boosting Learning 地址:https://arxiv.org/pdf/2312.08004.pdf 来源:复旦大学 英特尔Shanghai Key Lab /美团 文章目录 系列文…

本地引文建设指南

以下是引文建设如何帮助链接建设和网站可见性,以及如何开始建设本地引文。 您上一次进行本地在线搜索是什么时候? 当您想查找您所在地区的产品或服务时,您会翻开老式的电话簿,还是使用您最喜欢的搜索引擎? 想想吧&a…

【Transformer】深入理解Transformer模型2——深入认识理解(下)

前言 Transformer模型出自论文:《Attention is All You Need》 2017年 近年来,在自然语言处理领域和图像处理领域,Transformer模型都受到了极为广泛的关注,很多模型中都用到了Transformer或者是Transformer模型的变体&#xff0…

WPF 显示气泡提示框

气泡提示框应用举例 有时候在我们开发的软件经常会遇到需要提示用户的地方,为了让用户更直观,快速了解提示信息,使用简洁、好看又方便的气泡提示框显得更加方便,更具人性化。如下面例子:(当用户未输入账号时&#xff0…

【超详细教程】GoogleTest CMake直接构建(无需安装,手把手教程)

文章目录 相关教程相关文献CMake工程构建CMakeLists.txt(能访问GitHub)CMakeLists.txt(不能访问GitHub)官方测试用例 配置CMake打包gtest.a: 作者:小猪快跑 基础数学&计算数学,从事优化领域…

模式识别与机器学习-判别式分类器

模式识别与机器学习-判别式分类器 生成式模型和判别式模型的区别线性判别函数多分类情况多分类情况1多分类情况2多分类情况3 例题 广义线性判别函数实例 分段线性判别函数Fisher线性判别感知机算法例:感知机多类别分类 谨以此博客作为学习期间的记录 生成式模型和判…

最小覆盖子串(LeetCode 76)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路参考文献 1.问题描述 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t 中重复字符&#xff…

超详细YOLOv8姿态检测全程概述:环境、训练、验证与预测详解

目录 yolov8导航 YOLOv8(附带各种任务详细说明链接) 搭建环境说明 不同版本模型性能对比 不同版本对比 参数解释 模型解释 训练 训练示意代码 训练数据与.yaml配置方法 .yaml配置 数据集路径 标签数据说明 训练参数说明 训练过程示意及输出…

使用 Spring Boot + MyBatis开发需要注意的事项以及开发模版

前言: 注意,本篇不适用于有相关开发经验的开发者,作为一个在职开发者,我经常在完成从0-1的模块,也就是从数据库表开始到创建实体类,以及dao层,Service层等业务需要添加相关注解,这样…

海凌科HLK-V2语音识别模块更新词条

简介 HLK-V20 是海凌科的离线语音识别模块, 中英文不同时支持, 只支持中文/英文, 具体识别看每次的SDK更新设置;资料下载 可以在微信公众包搜索海凌科或HI-LINK, 下载资料 感知模块->HLK-V20 模块限制 中英文被限制, 需要根据你在官网设置的SDK信息进行确定;可以仅设置3…

Prometheus快速入门实战

介绍 prometheus 受启发于 Google 的 Brogmon 监控系统(相似 kubernetes 是从 Brog 系统演变而来)。2016 年 5 月继 kubernetes 之后成为第二个加入 CNCF 基金会的项目,同年 6 月正式发布 1.0 版本。2017 年底发布基于全新存储层的 2.0 版本…

软件设计师——数据库系统(三)

📑前言 本文主要是【数据库系统】——软件设计师——数据库系统的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 &#x1…

深入浅出理解TensorFlow的padding填充算法

一、参考资料 notes_on_padding_2 二、TensorFlow的padding算法 本文以TensorFlow v2.14.0版本为例,介绍TensorFlow的padding算法。 1. 引言 tf.nn.conv2d and tf.nn.max_pool2d 函数都有padding参数,在执行函数之前,都需要进行填充padd…