spring常用知识点

1、拦截器和过滤器区别

1. 原理不同:

拦截器是基于java的反射机制,而过滤器采用责任链模式是基于函数回调的。

2. 使用范围不同:

过滤器Filter的使用依赖于Tomcat等容器,导致它只能在web程序中使用

拦截器是一个Sping组件,由Spring管理,不依赖于Tomcat容器,是可以单独使用的。也可以应用于Application、Swing容器中。

3.执行顺序不同:

先过滤器后拦截器

4.注入Bean情况不同:

拦截器加载的时间点在springcontext之前,而Bean又是由spring进行管理。

在注册拦截器之前,先将Interceptor 手动进行注入

2、什么是AOP? 有哪些AOP的概念?


AOP(Aspect-Oriented Programming)是一种编程思想,它通过将应用程序分解成多个切面,来实现对应用程序进行横向切割的目的,从而实现代码的复用和系统的解耦。

AOP的核心思想是将与业务逻辑无关的代码,如日志、事务、异常处理等,从业务逻辑代码中分离出来,形成独立的模块,以便于复用和维护。

AOP的一些概念如下:

切面(Aspect):切面是一个模块化的横切关注点,它通过对某个点进行拦截,来实现对目标对象的增强。
连接点(Join Point):连接点是在应用程序执行过程中能够插入切面的点,例如方法调用或异常处理等。
切入点(Pointcut):切入点是一组连接点的集合,它定义了在哪些连接点处应用切面。
通知(Advice):通知是切面在连接点上执行的操作,例如在方法调用前、方法调用后、方法返回时或方法抛出异常时执行的操作。
织入(Weaving):织入是将切面应用到目标对象并创建新的代理对象的过程。织入可以在编译时、类加载时或运行时进行。
目标对象(Target Object):目标对象是应用程序中需要被增强的对象。
代理对象(Proxy Object):代理对象是一个中间件对象,它拦截对目标对象的访问并调用切面提供的通知。
通过AOP的概念,我们可以将应用程序按照不同的横向关注点进行切割,并将与业务逻辑无关的代码分离出来,从而提高应用程序的可维护性和可扩展性。常见的AOP框架有Spring AOP和AspectJ。

3、AOP 有哪些应用场景?

AOP(Aspect-Oriented Programming)可以在许多场景下被应用。以下是一些AOP的应用场景:

日志记录:在方法调用前后记录日志,用于排查错误和分析系统性能。
安全性控制:控制用户对系统中某些资源或方法的访问权限,确保系统安全。
事务管理:在方法调用前后开启、提交或回滚事务,确保数据的一致性和完整性。
缓存管理:通过在方法调用前检查缓存中是否有目标对象的缓存结果,减少系统的响应时间和网络开销。
性能监控:记录方法调用的时间、次数和异常等信息,以便于分析系统性能。
异常处理:在方法调用过程中捕获异常并记录或通知开发人员,以便于及时处理异常情况。
数据验证:在方法调用前对输入参数进行验证,确保输入数据的正确性和合法性。
代码复用:将与业务逻辑无关的代码抽离出来,以便于复用和维护。

4、Bean Factory和ApplicationContext有什么区别?


Bean Factory和ApplicationContext都是Spring框架中负责管理Bean的容器,但是它们之间有一些区别:

Bean Factory是Spring框架的基础设施,提供了最基本的IOC功能,而ApplicationContext是Bean Factory的超集,包含了Bean Factory的所有功能,并且还提供了更多的企业级特性,如事件传播、国际化、AOP等。
在实现上,ApplicationContext是Bean Factory的扩展,ApplicationContext除了提供了Bean Factory的所有功能之外,还提供了更多的功能,例如:资源管理、事件发布等等。
一般来说,Bean Factory适用于轻量级应用,而ApplicationContext则适用于大型企业应用,因为ApplicationContext提供了更多的企业级特性和功能,例如:事务管理、远程访问、JNDI访问等等。
ApplicationContext在启动时就实例化所有的单例Bean,而Bean Factory是在获取Bean时才进行实例化。
总之,ApplicationContext是Bean Factory的超集,提供了更多的企业级特性和功能,一般情况下我们优先使用ApplicationContext。

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

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

相关文章

abs(-2147483648) == 2147483648?

从数学意义上,这是对的。但是,就怕但是。 #include int main() {long long v;v abs(-2147483648);printf("%lld\n", v);return 0; } 输出: -2147483648 我们从source code中一一解开. /* Return the absolute value of I. */ int abs (…

Mongodb介绍及springboot集成增删改查

文章目录 1. MongoDB相关概念1.1 业务应用场景1.2 MongoDB简介1.3 体系结构1.4 数据模型1.5 MongoDB的特点 2. docker安装mongodb3. springboot集成3.1 文件结构3.2 增删改查3.2.1 增加insert3.2.2 保存save3.2.3 更新update3.2.4 查询3.2.5 删除 1. MongoDB相关概念 1.1 业务…

Docker-Android安卓模拟器本地部署并实现远程开发测试

文章目录 1. 虚拟化环境检查2. Android 模拟器部署3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问小结 6. 固定Cpolar公网地址7. 固定地址访问 本文主要介绍如何在Ubuntu系统使用Docker部署docker-android安卓模拟器,并结合cpolar内网穿透工具实现公网远程访问本地…

51建模网AR虚拟试用,让网购不再只靠想象!

在数字化的浪潮中,网购已成为现代人生活的一部分。然而,传统的网购模式常常因为无法直接试穿、试用商品,导致买家在收到商品后感到失望,特别是面对大件家居产品时,仅凭屏幕上的图片和尺寸描述,很难准确地把…

智能AI愈发强大,企业如何防范AI网络钓鱼攻击

随着AI技术的快速发展,如ChatGPT等智能化工具在各个领域得到了广泛应用。然而,这些工具的普及也给网络安全带来了新的挑战。AI模型的自然语言生成功能使得网络钓鱼攻击更加智能化和隐蔽化,攻击者能够利用AI技术生成高度逼真的欺骗性邮件和其他…

深度学习之基于YoloV5人体姿态摔倒识别分析报警系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着人口老龄化的加剧和人们对健康安全的日益关注,摔倒事件在老年人、幼儿、体育运…

分布式文件系统minIo

分布式文件系统 什么是分布式文件系统 一个计算机无法存储海量的文件,通过网络将若干计算机组织起来共同去存储海量的文件,去接收海量用户的请求,这些组织起来的计算机通过网络进行通信,如下图: 好处: 1、…

怎么ai思维导图自动生成?推荐这三个工具

怎么ai思维导图自动生成?随着人工智能(AI)技术的不断发展,其在各个领域的应用也日益广泛。在思维导图这一领域,AI技术的引入不仅极大地提高了制图效率,还为用户提供了更多样化、个性化的制图体验。本文将为…

基于消息中间件的异步通信机制在系统解耦中的优化与实现

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…

GPT-SoVITS语音克隆部署与使用

GPT-SoVITS是一款强大的少量样本语音转换与语音合成开源工具。当前,GPT-SoVITS实现了如下几个方面的功能: 由参考音频的情感、音色、语速控制合成音频的情感、音色、语速可以少量语音微调训练,也可不训练直接推理可以跨语种生成,…

【AI】试用 ai 提取文章内容尝试

电梯产业面临这样一个问题,因为太多的品牌,将近 400 多个,甚至有宝马,奥迪,你敢相信,一家造汽车的造过电梯?不过好像想想也是,电梯是第二大交通工具,电梯从某种意义上来说&#xff…

无网环境禁止 WPS 提示登录,且基本功能按钮可用

目前 WPS 升级后,每次打开都会提示你登录 WPS,并且在未登录之前所有基本功能按钮是置灰状态,无法使用。 如此一来,在内网或无网环境,我们无法登陆 WPS ,就给我们的使用带来了极大的不便,那么有没…

全网最全面的由浅到深的Kotlin基础教程(七)

前言 本篇文章接着上一篇文章全网最全面的由浅到深的Kotlin基础教程(六)继续进阶学习kotlin,建议看完上一篇文章,再来看本篇文章。本篇主要分析一些常用的kotlin函数源码,以及用kotlin简单实现Rxjava的几个操作符。坚…

全志A133 android10 调试vibrator震动马达

一,前提条件 全志使用的马达配置为上电震动,下电停止,需测试硬件是否正常。马达供电最好为独立供电,避免干扰。 二,适配步骤 1. dts中增加马达配置 motor_para {compatible "allwinner,sunxi-vibrator";…

BGP实验:联邦和发射器实验

BGP实验:联邦和发射器实验 一、实验拓扑 二、实验要求及分析 实验要求: 1、AS1存在两个环回,一个地址为192.168.1.0/24,该地址不能再任何协议中宣告; ​ AS3存在两个环回,一个地址为192.168.2.0/24&…

解决ModuleNotFoundError: No module named ‘open_clip‘问题

在使用stable diffusion大模型时,添加一些模型后启动df页面报错:ModuleNotFoundError: No module named open_clip 使用 pip install open_clip命令下载失败,报错: Looking in indexes: https://mirrors.aliyun.com/pypi/simple…

Redis【B站面试题】

前言 2023-07-27 22:44:59 出自B站 灰灰的Java面试 Redis Redis为什么快? 1.纯内存KV操作 Redis的操作都是基于内存的,CPU不是 Redis性能瓶颈,,Redis的瓶颈是机器内存和网络带宽。 在计算机的世界中,CPU的速度是远大于内存的速…

深度学习之基于TensorFlow人脸表情识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 人脸表情识别是计算机视觉领域的重要研究方向之一,它在人机交互、情感分析、安全监控等领…

Java 变量和作用域:理解变量的声明、初始化及其作用域

在Java编程语言中,变量和作用域是两个核心概念。理解变量的声明、初始化以及它们的作用域对于编写健壮且高效的代码至关重要。 变量的声明与初始化 变量的声明 在Java中,变量的声明指的是定义变量的名称和类型。在Java中,变量声明的一般语…

ubuntu使用记录——如何使用wireshark网络抓包工具进行检测速腾激光雷达的ip和端口号

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言wireshark网络抓包工具1.wireshark的安装2.wireshark的使用3.更改雷达ip 总结 前言 Wireshark是一款备受赞誉的开源网络协议分析软件,其功能之强大…