当前位置: 首页 > news >正文

spring2.x详解介绍

一、核心架构升级

Spring 2.x 是 Spring 框架的重要迭代版本(2006-2009年间发布),其核心改进体现在 模块化设计 和 轻量化配置 上。相较于 1.x 版本,2.x 通过以下方式重构了架构:

  1. XML Schema 支持:弃用 DTD 配置格式,引入 XML Schema,使 XML 配置文件更简洁且类型安全。例如,集合配置从繁琐的 <list> 标签简化为 <util:list>
  2. 模块拆分优化:将框架拆分为 7 大模块(核心容器、AOP、DAO、ORM、Web、MVC、Context),降低耦合度,同时增强各模块的扩展性。

在这里插入图片描述


二、核心功能增强

  1. IoC 容器改进
  • 作用域扩展:在 singletonprototype 基础上新增 requestsession 作用域,支持 Web 应用的上下文管理。需通过 <aop:scoped-proxy> 生成代理对象实现依赖注入的动态切换。

  • 父子容器继承:允许通过 parent 属性引用父容器中的 Bean,实现配置的层级复用。

  1. AOP 与 AspectJ 深度整合
  • 注解驱动:引入 @AspectJ 注解,允许通过 Java 类定义切面,替代 XML 配置。例如:

    @Aspect
    public class LoggingAspect {@Before("execution(* com.example.service.*.*(..))")public void logMethodCall() { /* ... */ }
    }
    
  • 静态织入支持:通过 AspectJ 编译器实现容器外对象的 AOP 代理,解决传统 Spring AOP 仅能管理容器内 Bean 的局限性。

  1. 数据访问层优化
  • JdbcTemplate 增强:新增 NamedParameterJdbcTemplate 支持命名参数,避免传统 ? 占位符易错问题;SimpleJdbcTemplate 简化 JDBC 操作代码。

  • 声明式事务简化:通过 <tx:annotation-driven> 标签启用注解式事务管理,结合 @Transactional 实现方法级事务控制。

三、企业级功能扩展

  1. Web 层增强:

    • Spring MVC 改进:引入契约模式(Convention over Configuration),减少控制器与视图的显式映射配置。例如,默认按控制器类名映射 URL。

    • 标签库升级:增强 JSP 标签库功能,支持动态表单绑定和国际化处理。

  2. 整合现代技术:

    • 动态语言支持:集成 JRuby、Groovy 等脚本语言,允许通过 <lang:groovy> 标签动态加载脚本类。

    • JPA 与 JMS:提供对 Java Persistence API 的标准化支持,简化 ORM 整合;通过 JmsTemplate 优化消息队列操作。

四、配置与开发体验提升

  • 外部化配置:支持属性文件(.properties)与 XML 配置混合使用,通过 ${} 占位符实现动态值注入。

  • 工具链优化:提供 Maven/Gradle 插件支持,简化依赖管理和构建流程。例如,Maven 依赖声明:

    <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>2.5.6</version>
    </dependency>
    

五、局限性与演进方向

  • 配置复杂度:尽管 XML Schema 简化了配置,但大型项目中 XML 文件仍可能臃肿,为后续版本注解驱动(如 Spring 3.x 的 @Configuration)埋下伏笔。

  • 性能瓶颈:AOP 代理在复杂切面场景下可能影响性能,后续版本通过 CGLIB 优化和 AspectJ 编译时织入逐步解决。


总结

Spring 2.x 通过 模块化重构、AOP 深度整合 和 企业级功能扩展,奠定了现代 Java 开发框架的基础。其设计理念(如 XML Schema 配置、作用域分层)深刻影响了后续版本演进,是 Spring 生态从“轻量级容器”向“全栈框架”转型的关键版本。对于需要维护遗留系统或学习框架设计思想的开发者,2.x 版本仍具参考价值。

相关文章:

spring2.x详解介绍

一、核心架构升级 Spring 2.x 是 Spring 框架的重要迭代版本&#xff08;2006-2009年间发布&#xff09;&#xff0c;其核心改进体现在 模块化设计 和 轻量化配置 上。相较于 1.x 版本&#xff0c;2.x 通过以下方式重构了架构&#xff1a; XML Schema 支持&#xff1a;弃用 D…...

探索Grok-3的高级用法:功能与应用详解

引言 随着人工智能技术的迅猛发展&#xff0c;xAI推出的Grok-3模型以其卓越的性能和创新功能&#xff0c;成为AI领域的新标杆。Grok-3不仅在计算能力上实现了十倍提升&#xff0c;还引入了多种高级模式和实时数据处理能力&#xff0c;适用于学术研究、技术分析、市场洞察等多场…...

PyTorch_张量转换为numpy数组

使用 tensor.numpy 函数可以将张量转换为 ndarray 数组&#xff0c;但是共享内存&#xff0c;可以使用 copy 函数避免共享。共享内存会导致张量或者numpy中的其中一个更改后&#xff0c;另外一个会受到影响。 代码 import torch # 张量转换为 numpy 数组 def test01():data_te…...

什么是“原子变量”?

原子变量(std::atomic)在C++中是一个非常关键的机制,特别是在多线程编程中保持数据安全和避免竞争条件。它的设计目标就是让一段操作在多线程环境下变得“原子性”,即不可被中断,保证操作的完整与一致。 一、什么是“原子变量”? 简单来说: 普通变量:在多线程环境中,…...

[Linux开发工具]gcc/g++

C语言文件编译运行 gcc code.c -o mycode gcc -o mycode code.c 预处理 汇编 编译 链接 预处理(进行宏替换/去注释/条件编译/头文件展开) gcc -E code.c -o code.i -E ->从现在开始进行程序的编译,当我们 的程序预处理完毕后,翻译工作,就停下来 code.i预处理之后的结果 …...

【Mytais系列】Type模块:类型转换

MyBatis 的 类型系统&#xff08;Type System&#xff09; 是框架处理 Java 类型与数据库类型之间映射的核心模块&#xff0c;它通过 类型处理器&#xff08;TypeHandler&#xff09;、类型别名&#xff08;TypeAlias&#xff09; 和 类型转换器 等机制&#xff0c;实现了数据库…...

C++类_虚基类

在 C 里&#xff0c;虚基类是用来解决菱形继承问题的。菱形继承问题是指当一个派生类从两个或更多基类派生&#xff0c;而这些基类又从同一个基类派生时&#xff0c;派生类会包含多份间接基类的数据副本&#xff0c;这可能会引发数据冗余和二义性问题。虚基类可以保证在派生类中…...

【自然语言处理与大模型】使用Xtuner进行模型合并与导出

在上一篇文章中我为大家介绍了Xtuner框架如何进行QLoRA微调&#xff0c;这个框架在微调过后会得到适配器权重文件&#xff0c;它的后缀是.pth。但原模型都是huggingface模型&#xff0c;其后缀是safetensors。所以呢我们在使用这个框架导出模型之前要合并&#xff0c;合并之前要…...

数据结构4.0

大家好&#xff0c;今天是栈的知识点~ 目录 一、栈的概念 1.0 栈的概念 2.0 概念区分 二、栈的方法 1.0 MyStack方法&#xff1a; 2.0 将元素压入栈顶 3.0 移除并返回栈顶元素 4.0 返回栈顶元素但不移除 三、栈的题目 1.0括号匹配 2.0逆波兰表达式求值 3.0 出栈…...

SMT贴片检验标准核心要点与实施规范

内容概要 SMT贴片检验标准是确保电子产品组装质量的核心框架&#xff0c;其核心要点覆盖从原材料到成品的全流程工艺控制。该标准体系以焊点质量、元件定位精度及锡膏印刷检测为技术基线&#xff0c;结合IPC-A-610电子组装验收规范&#xff0c;对PCBA加工中的缺陷类型、判定阈…...

探索 C++23 std::to_underlying:枚举底层值获取的利器

文章目录 引言基本概念作用使用示例与之前方法的对比在 C23 中的意义总结 引言 在 C 的发展历程中&#xff0c;每一个新版本都带来了许多令人期待的新特性和改进&#xff0c;以提升代码的安全性、可读性和可维护性。C23 作为其中的一个重要版本&#xff0c;也不例外。其中&…...

PyTorch学习之张量(Tensor)(一)

1. 张量的基本概念 1.1. 定义与特性 张量是PyTorch中最基础的数据结构&#xff0c;可视为多维数组的泛化形式&#xff0c;支持标量&#xff08;0维&#xff09;、向量&#xff08;1维&#xff09;、矩阵&#xff08;2维&#xff09;及更高维度的数据存储。其核心特性包括&…...

理解数学概念——支集(支持)(support)

1. 支集(support)的定义 在数学中&#xff0c;一个实函数 f 的支集(support)是函数的不被映射到 0 的元素域(即定义域)的子集。若 f 的(定义)域(domain)是一个拓扑空间(即符合拓扑的集合)&#xff0c;则 f 的支集则定义为包含( f 的元素域中)不被映射到0的所有点之最小闭集…...

Python 部分内置函数及其用法详解

在 Python 编程的世界里&#xff0c;内置函数是我们强大的 “工具箱”&#xff0c;它们提供了丰富而便捷的功能&#xff0c;帮助我们高效地完成各种任务。本文将带你深入了解这些常用内置函数及其用法&#xff0c;通过简单易懂的实例&#xff0c;让你轻松掌握它们。 一、数据类…...

[蓝桥杯真题题目及解析]2025年C++b组

移动距离&#xff08;填空&#xff09;** 小明初始在二维平面的原点&#xff0c;他想前往坐标 (233,666)。在移动过程中&#xff0c;他只能采用以下两种移动方式&#xff0c;并且这两种移动方式可以交替、不限次数地使用&#xff1a; 水平向右移动&#xff0c;即沿着 x 轴正方…...

yolov5 train笔记4 roboflow

How to Train a YOLOv5 Model On a Custom Dataset Sign in to Roboflow https://www.youtube.com/watch?vr3Ke7ZEh2Qo 他的ai懂中文的 还是得训练&#xff0c;明天再搞 https://www.youtube.com/watch?vEmYCpbFQ5wo&t2s 很香但是我没有马内...

工作记录 2015-06-01

工作记录 2015-06-01 序号 工作 相关人员 1 修改了FnetFax 修改了iConverter 修改了iCDA 郝 FNSR识别引擎 统计了最近几个星期0223医院的打字和录音的时间比。上周的比值是3.42&#xff0c;是近8个星期中最低的值。和05/03/2015 - 05/09/2015的3.74相比&#xff0c;下降…...

创意Python爱心代码分享

在代码的世界里&#xff0c;程序员以独特方式书写浪漫。他们精心打造的一个个 demo&#xff0c;宛如熠熠星辰。这些 demo 不仅是技术结晶&#xff0c;更饱含对编程的热爱与执着。从简洁的算法示例到复杂的系统雏形&#xff0c;每一行代码都凝聚着思考与智慧。它们被无私分享&am…...

【RAG】向量?知识库的底层原理:向量数据库の技术鉴赏 | HNSW(导航小世界)、LSH、K-means

一、向量化表示的核心概念 1.1 特征空间与向量表示 多维特征表示&#xff1a;通过多个特征维度&#xff08;如体型、毛发长度、鼻子长短等&#xff09;描述对象&#xff0c;每个对象对应高维空间中的一个坐标点&#xff0c;来表示狗这个对象&#xff0c;这样可以区分出不同种…...

降维大合集

1. 主成分分析&#xff08;PCA&#xff0c;Principal Component Analysis&#xff09; 基本原理 PCA 是一种线性降维方法&#xff0c;其核心思想是&#xff1a; 找到数据中方差最大的方向&#xff08;称为主成分&#xff09;&#xff0c;并将数据投影到这些方向上。 利用正交变…...

AWS上构建基于自然语言和LINDO API的线性规划与非线性规划的优化计算系统

我想要实现一个通过使用C#、Semantic Kernel库、OpenAI GPT 4的API和附件文档里提到的LINDO API 15.0实现通过中文自然语言提示词中包含LATEX代码输入到系统&#xff0c;通过LINDO API 15.0线性规划与非线性规划的优化计算程序输出计算结果和必要步骤的应用&#xff0c;结果用中…...

26考研 | 王道 | 计算机网络 | 第三章 数据链路层

26考研 | 王道 | 第三章 数据链路层 数据链路层所处的地位 数据链路层 使用 物理层 提供的“比特传输”服务数据链路层 为 网络层 提供服务&#xff0c;将网络层的 IP数据报&#xff08;分组&#xff09;封装成帧&#xff0c;传输给下一个相邻结点物理链路&#xff1a;传输介质…...

学习黑客资产威胁分析贴

第一天作业&#xff1a; 完成作业奖励&#xff1a; &#x1f381; 奖励 1 ── Week 2《Web 渗透手册》预览 Day主题关键目标练手靶场 / 工具1HTTP 基础 & Burp 入门抓包、改包、重放PortSwigger Academy&#xff1a;“HTTP basics”2SQL 注入原理手工注入 sqlmapDVWA →…...

CSS元素动画篇:基于当前位置的变换动画(合集篇)

CSS元素动画篇&#xff1a;基于当前位置的变换动画&#xff08;合集篇&#xff09; 前言位移效果类元素动画水平抖动效果效果预览代码实现 垂直抖动效果效果预览代码实现 摇头动画效果效果预览代码实现 点头动画效果效果预览代码实现 旋转效果类元素动画摇摆动画效果效果预览代…...

Spring 容器相关的核心注解​

以下是 Spring 容器中用于 ​​Bean 管理、依赖注入、配置控制​​ 的关键注解&#xff0c;按功能分类说明&#xff1a; ​​1. Bean 声明与注册​​ 注解作用示例​​Component​​通用注解&#xff0c;标记一个类为 Spring Bean&#xff08;自动扫描注册&#xff09; Compo…...

经典算法 最小生成树(prim算法)

最小生成树 题目描述 给定一个 n 个点 m 条边的无向图&#xff0c;图中可能存在重边和自环&#xff0c;边权可能为负数。 求最小生成树的树边权重之和。如果最小生成树不存在&#xff0c;则输出 impossible。 给定一张边带权的无向图 G (V, E)&#xff0c;其中&#xff1a…...

机器学习中的分类和回归问题

1. 分类问题 机器学习中的分类问题是一种监督学习任务&#xff0c;其核心目标是将数据样本分配到预定义的离散类别中&#xff0c;例如判断邮件是否为垃圾邮件、识别图像中的物体类型等。 分类通过已知标签的训练数据&#xff08;如带类别标注的样本&#xff09;学习特征与类别…...

pip命令

安装&卸载 -- 安装numpy pip install numpy1.26.4 -- 从索引安装&#xff08;自定义源&#xff09; pip install package_name --index-url https://custom_url -- 安装本地文件或目录 pip install /path/to/package.whl pip install D:\Downloads\transformers-4.40.0-py…...

n8n工作流自动化平台的实操:Cannot find module ‘iconv-lite‘

解决问题&#xff1a; 1.在可视化界面&#xff0c;执行const iconv require(iconv-lite);&#xff0c;报Cannot find module iconv-lite [line 2]错误&#xff1b; 查看module的路径 进入docker容器 #docker exec -it n8n /bin/sh 构建一个test.js,并写入如何代码 vi tes…...

AIGC时代——语义化AI驱动器:提示词的未来图景与技术深潜

文章目录 一、技术范式重构&#xff1a;从指令集到语义认知网络1.1 多模态语义解析器的进化路径1.2 提示词工程的认知分层 二、交互革命&#xff1a;从提示词到意图理解2.1 自然语言交互的认知进化2.2 专业领域的认知增强 三、未来技术图谱&#xff1a;2025-2030演进路线3.1 20…...

基于Springboot高校网上缴费综合务系统【附源码】

基于Springboot高校网上缴费综合务系统 效果如下&#xff1a; 系统登陆页面 个人中心页面 论坛交流页面 发表评论页面 付款页面 教师缴费页面 新增缴费类型页面 审核页面 研究背景 随着高校信息化建设进程的加速&#xff0c;传统手工缴费模式因效率低、错误率高、管理成本高…...

返回倒数第k个节点题解

这题要用到快慢指针的思想。 1.定义两个指针&#xff0c;一个快指针&#xff0c;一个慢指针&#xff0c;初始都指向头结点 2.先让快指针往后走k步&#xff0c;也就是移动k个节点&#xff0c;这个时候快指针比慢指针领先k 3.现在让快慢指针同时往后移动&#xff0c;两指针之间…...

《操作系统精髓与设计原理》第4章课后题答案-线程、对称多处理器和微内核

1.表3.5列出了在一个没有线程的操作系统中进程控制块的基本元素。对于多线程系统&#xff0c;这些元素中哪些可能属于线程控制块&#xff0c;哪些可能属于进程控制块&#xff1f; 对于不同的系统来说通常是不同的&#xff0c;但一般来说&#xff0c;进程是资源的所有者&#xf…...

《ATPL地面培训教材13:飞行原理》——第4章:亚音速气流

翻译&#xff1a;刘远贺&#xff1b;工具&#xff1a;Cursor & Claude 3.7&#xff1b;过程稿 第4章&#xff1a;亚音速气流 目录 翼型术语气流基础二维气流总结习题答案 翼型术语 翼型 一种能够以较高效率产生升力的特殊形状。 弦线 连接翼型前缘和后缘曲率中心的直…...

5月3日星期六今日早报简报微语报早读

5月3日星期六&#xff0c;农历四月初六&#xff0c;早报#微语早读。 1、五一假期多地政府食堂对外开放&#xff1a;部分机关食堂饭菜“秒没”&#xff1b; 2、2025年五一档电影新片票房破3亿&#xff1b; 3、首日5金&#xff01;中国队夺得跳水世界杯总决赛混合团体冠军&…...

2024 虚拟电厂与大电网三道防线的关系探讨【附全文阅读】

本文围绕虚拟电厂与大电网三道防线展开探讨。大电网三道防线包括第一道防线的预防性控制和继电保护、第二道防线的稳控系统、第三道防线的失步解列及频率电压紧急控制装置 &#xff0c;新型电力系统建设对第三道防线带来频率稳定等挑战。当前新型配电网第三道防线建设存在问题&…...

【c++】模板详解

目录 泛型编程模板的使用函数模板函数模板的本质函数模板的实例化显式实例化隐式实例化 函数模板的模板参数的匹配原则 类模板类模板的本质类模板的实例化 非类型模板参数模板特化函数模板特化类模板特化类模板全特化类模板偏特化&#xff08;半特化&#xff09; 模板分离编译t…...

【Linux】驱动开发方法

使用Petalinux学习驱动开发时的一些经验。 部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 基础——字符设备驱动 1.1 分配设备号(驱动入口使用)…...

BUUCTF——禁止套娃

BUUCTF——禁止套娃 进入靶场 一个近乎空白的页面 看一下框架 没什么有用的信息&#xff0c;扫个目录吧 只扫出来给flag.php&#xff0c;但是0B&#xff0c;估计又是个空网站 拼接访问一下 果然又是什么都没有 没有突破口 githack找找看看也没有源码吧 <?php include …...

Spring MVC @RequestBody 注解怎么用?接收什么格式的数据?

RequestBody 注解的作用 RequestBody 将方法上的参数绑定到 HTTP 请求的 Body&#xff08;请求体&#xff09;的内容上。 当客户端发送一个包含数据的请求体&#xff08;通常在 POST, PUT, PATCH 请求中&#xff09;时&#xff0c;RequestBody 告诉 Spring MVC 读取这个请求体…...

线性DP(动态规划)

线性DP的概念&#xff08;视频&#xff09; 学习线性DP之前&#xff0c;请确保已经对递推有所了解。 一、概念 1、动态规划 不要去看网上的各种概念&#xff0c;什么无后效性&#xff0c;什么空间换时间&#xff0c;会越看越晕。从做题的角度去理解就好了&#xff0c;动态规划…...

Qt中实现工厂模式

在Qt中实现工厂模式可以通过多种方式&#xff0c;具体选择取决于需求和场景。以下是几种常见的实现方法&#xff1a; 1. 简单工厂模式通过一个工厂类根据参数创建不同对象。cppclass Shape {public: virtual void draw() 0; virtual ~Shape() default;};class Circle : publ…...

基于 Dify + vLLM插件 + Qwen3 构建问答机器人Docker版

前提条件 硬件要求&#xff1a; 推荐 NVIDIA GPU (至少 16GB 显存&#xff0c;Qwen3 可能需要更多) 至少 32GB 内存 足够的存储空间 (Qwen3 模型文件较大) 软件要求&#xff1a; Docker 和 Docker Compose Python 3.8 CUDA 和 cuDNN (与你的 GPU 兼容的版本) 安装步骤…...

【Linux】Linux应用开发小经验

基于Petalinux工具链的Linux应用开发小经验&#xff0c;未完待续... 部分图片和经验来源于网络&#xff0c;若有侵权麻烦联系我删除&#xff0c;主要是做笔记的时候忘记写来源了&#xff0c;做完笔记很久才写博客。 专栏目录&#xff1a;记录自己的嵌入式学习之路-CSDN博客 目录…...

第39课 绘制原理图——绘制命令在哪里?

绘制原理图符号的命令在哪里&#xff1f; 在新建完原理图之后&#xff0c;我们就可以在原理图上绘制各种相关的符号了。 我们基本会从以下的两个地方&#xff0c;找到绘制各种符号的命令&#xff1a; 菜单栏中的“放置”菜单&#xff1b; 悬浮于设计窗口中的快速工具条 在初…...

第十四篇:系统分析师第三遍——15章

目录 一、目标二、计划三、完成情况四、意外之喜(最少2点)1.计划内的明确认知和思想的提升标志2.计划外的具体事情提升内容和标志 五、总结六、后面准备怎么做&#xff1f; 一、目标 通过参加考试&#xff0c;训练学习能力&#xff0c;而非单纯以拿证为目的。 1.在复习过程中&…...

市面上所有大模型apikey获取指南(持续更新中)

阿里云(千问) 官方文档&#xff1a; 百炼控制台 1. 登录百炼控制台 2.前往我的api页面百炼控制台 3.创建api4. 添加描述&#xff08;用于aichat&#xff09; Deepseek 官方文档&#xff1a;首次调用 API | DeepSeek API Docs 1. 登录api平台 DeepSeek 开放平台 2. Deep…...

Java框架“若依RuoYi”前后端分离部署

运行环境 Eclipse IDE for Enterprise Java and Web Developers 下载Eclipse解压Eclipse到文件夹 Maven 下载Maven解压Maven到文件夹配置环境变量MAVEN_HOME为Maven安装位置配置环境变量path为%MAVEN_HOME%\bin Redis 下载Redis解压Redis到文件夹配置环境变量path为Redis安装位…...

计网_可靠传输ARQ机制

2024.09.04&#xff1a;网工老姜&beokayy网工学习笔记 第5节 可靠传输机制 5.1 可靠传输5.2 ARQ机制、ARQ协议5.3 ARQ简介&#xff08;可靠传输&#xff09;5.3.1 停止等待协议&#xff08;1&#xff09;无差错情况&#xff08;2&#xff09;有差错情况确认丢失确认迟到 5.…...

实验-组合电路设计1-全加器和加法器(数字逻辑)

目录 一、实验内容 二、实验步骤 2.1 全加器的设计 2.2 加法器的设计 三、调试过程 3.1 全加器调试过程 2.加法器的调试过程 四、实验使用环境 五、实验小结和思考 一、实验内容 a) 介绍 在这次实验中&#xff0c;你将熟悉 Logisim 的操作流程&#xff0c;并且学习…...