二 、 Spring 学习笔记 之 Spring 框架的演变

Spring进阶(十六)之spring生命周期 spring生命周期详解,高手必看 阅读详情

        Spring 框架源自 Rod John son 编写的 Expert One-on-One: J2EE Design and Development 一书 (Wrox 出版社,
2002 年出版)。在过去十年 中, Spring 框架在核心功能、相关项目以及社区支持方面发展迅猛 。 随着 Spring 框架
的新主要版本的推出,有必要快速回顾一下 Spring 的每个里程碑版本所带来的重要特性,并最终发展到 Spring
Framework 5.0 。

  • Spring 0 .9 :这是该框架第一个公开发布的版本,以 Expert One-on-One: J2EE Design and Deν'e!opment 一书

为基础,提供了 bean 配置基础、 AOP 支持、 JDBC 抽象框架、抽象事务支持等。 该版本没有官方参考文档 ,
但可以在 SourceForge 上找到现有的源代码和文档  。

  •  Spring 1.x:这是发布的第一个带有官方参考文档的版本 。 它由图 1-1 所示的七个模块组成 。

            + Spring Core: bean 容器以及支持的实用程序 。
            + Spting Context: App licationContext、 UT、验证、开IDI, Enterprise JavaBean(EJB)、远程处理和邮件支持。
            + Spring DAO:事务基础结构、 Java Database Connectivity(JDBC)和数据访问对象(DAO)支持 。
            + Spring ORM:因bemate、 iBATIS 和 Java Data Object(JDO)支持 。
            + Spring AOP : 符合 AOP 联盟的面向方面编程(AOP)实现 。
            + Spting Web:基本集成功能,比如多部分功能、通过 servlet 侦听器进行上下文初始化以及面向 Web 的
应用程序上下文。
            +  Spring Web MVC : 基于 Web 的 Model-View-Controller(MVC)框架 。

  •  Spring 2.x:该版本由图 1-2 所示的六个模块组成。 现在, Spring Context 模块包含在 Spring Core中,而在Spring 2.x 版本中 ,所有的 Spring Web 组件都由单个项目表示 。

 

        + 通过使用新的基于XML Schema 的配置而不是 DTD 格式来简化 XML 配置。值得注意的改进方面包括
           bean 定义、 AOP 以及声明式事务 。
        + 用于 Web 和门户的新 bean 作用域(请求、会话和全局会话) 。
        + 支持 AOP 开发的@AspectJ 注解。
        + Java PersistenceAPI(JPA)抽象层 。
·       + 完全支持异步 JMS 消息驱动的 POJO (用于普通的旧 Java 对象) 。
        + JDBC 简化包括在使用 Java 5+时的 SimpleJdbcTemplate。
        + JDBC 命名参数支持(NamedParameterJdbcTemplate) 。
        + 针对 SpringMVC 的表单标签库 。
       + 对 PortletMVC 框架的介绍 。
       ·+ 动态语言支持 。 可以使用 JRuby、 Groovy 以及 BeanShell 来编写 bean 。
·       + JMX 中的通知支持以及可控的 MBean 注册 。
        + 为调度任务而引入的 TaskExecutor 抽象 。
        + Java 5 注解支持,特别针对@Transactional 、 @Required 和@AspectJ 。

  • Spring 2.5.x:该版本包含以下功能 

        + 名为@Autowired 的新配置注解以及对 JSR-250 注解(@Resource、@PostConstruct 和@PreDestroy)的支持。
        + 新的构造型注解 : @Component 、 @ Repository、 @Service 和@Controller o
        + 自动类路径扫描支持,可以检测和连接带有构造型注解的类。
        + AOP 更新,包括一个新的 bean 切入点元素以及 AspectJ 加载时织入(weaving) 。
        + 完整的 WebSphere 事务管理支持 。
        + 除了 Spring MVC @Controller 注解,还添加了@Request:Mapping、 @Request:Param 和@ModelAttribute 注解,从               而支持通过注解配置进行请求处理 。
        + 支持 Tiles 2 。
        + 支持 JSF 1.2 。
        + 支持 JAX-WS 2.0/2.1 。
        + 引入了 Spring TestContext Framework,提供注解驱动和集成测试支持,不受所用测试框架的影响。
        + 能够将 Spring 应用程序上下文部署为 JCA 适配器 。

  • Spring 3.0.X:这是基于 Java 5 的 Spring 的第一个版本,旨在充分利用 Java 5 的功能,如泛型、可变参数和其他语言改进。 该版本引入了基于 Java 的@Configuration 模型 。 目前己经对框架模块进行了修改, 分别针对每个模块 JAR 使用一棵源、代码树进行管理 。 图 1-3 中对此进行了抽象描述。

        + 支持 Java 5 功能,例如泛型 、 可变参数以及其他改进。
        + 对 Callables 、 Futures 、 ExecutorServi ce 适配器和 ThreadFactory 集成提供很好的支持。
        + 框架模块目前针对每个模块 JAR 都使用→棵源代码树进行分别管理。
        + Spring Expression Language(SpEL)的号 | 入。
        + 核心 Java Config 功能和注解的集成。
        + 通用型转换系统和字段格式化系统。
        + 全面支持 REST 。
        + 新的 MVC XML 名称空间和其他注解,例如 SpringMVC 中的@CookieValue 和@RequestHeaders 。
        + 验证增强功能和 JSR-303(bean 验证)支持。
        + 对 Java EE 6 的早期支持,包括@ Async/@Asynchronou s 注解、 JSR-303 、 JSF 2 .0 、 JPA2 . 0 等 。
        + 支持嵌入式数据库,例如 HSQL 、 H2 和 Derby 。

  • Spring 3.1.x: 该版本包含以下功能。

        + 新的缓冲抽象。
        + 可以用 XML 定义 bean 定义配置文件,同时也支持@Profile 注解。
        + 针对统一属性管理的环境抽象 。
        + 与常见 Spring XML 名称空间元素等价的注f晖, 如@CornponentScan、 @EnableTransactionManagernent、
          @EnableCaching、@EnableWebMvc、 @EnableScheduling、@EnableAsync、 @EnableAspectJAutoProxy、
          @EnableLoadTimeWeaving 和@EnableSpringConfigured 。
        + 支持 Hibernate4 。
        + Spring TestContext Framework X才@Configuration 类和 bean 定义配置文件的支持。
        + 名称空间 c:简化了构造函数注入。
        + 支持 Servlet 3 中 Servlet 容器的基于代码的配置。
        + 能够在不使用 persistence.xml 的情况下启动 JPA EntityManagerFactory。
        + 将 Flash 和 RedirectAtttibutes 添加到 SpringMVC 中,从而允许通过使用 HTTP 会话重定向属性
        + URI 模板变量增强功能。
        + 能够使用@Valid 来注解 Spring MVC @RequestBody 控制器方法参数 。
        + 能够使用@RequestPart 来注解 SpringMVC 控制器方法参数。

  • Spring 3.2.x:该版本包含以下功能。

        + 支持基于 Setvlet3 的异步请求处理。
        + 新的 SpringMVC 测试框架。
        + 新的 SpringMVC 注解@ControllerAdvice 和@MatrixVariable 。
        + 支持 RestTemplate 和@RequestBody 参数中的泛型类型 。
        + 支持 Jackson JSON 2 。
        + 支持 Tiles 3 。
        + 现在,@RequestBody或@RequestPart参数的后面可以跟一个Errors参数,从而可以对验证错误进行处理。
        + 能够通过使用 MVC 名称空间和 Java Config 配置选项来排除 URL 模式。
        + 支持没有 Jada Time 的@DateTimeFormat 。
        + 全局日期和时间格式化。
        + 跨框架的并发优化,从而最小化锁定,并改进了作用域/原型 bean 的并发创建 。
        + 新的基于 Gradle 的构建系统 。
        + 迁移到 GitHub(https://github.com/SpringSource/spring-framework) 。
        + 在框架和第三方依赖、中支持精简的 Java SE 7/0penJDK 7。 现在, CGLIB 和 ASM 已经成为 Spring 的一部分 。 除了 AspectJ 1.6,其他版本都支持 AspectJ 1.7 。

  • Spting 4.0x: 这是一个重要的 Spring 版本,也是第一个完全支持 Java 8 的版本 。 虽然仍然可以使用较旧版本的 Java,但 Java SE6 已经提出了最低版本要求 。 弃用的类和方法己被删除,但模块组织几乎相同,如图 1 -4所示。


     

        + 通过新的 www.spring.io/guides 网站上的一系列入门指南提高了入门体验。
        + 从先前的 Spring 3 版本中删除了弃用的软件包和方法 。
        + 支持 Java 8 ,将最低 Java 版本提高到 6 update 18 。
        + Java EE 6 及以上版本现在被认为是 Spring Framework 4 .0 的基准。
        + Groovy bean 定义 DSL,允许通过 Groovy 语法配置 bean 定义 。
        + 核心容器、测试和一般 Web 改进 。
        + WebSocket、 SockJS 和 STOMP 消息 。

  • Spring 4.2 .x:该版本包含以下功能。

        + 核心改进(例如,引入@AliasFor,并修改现有的注解以使用它) 。
        + 全面支持 Hibernate ORM 5.0 。
        + JMS 和 Web 改进 。
        + 对 WebSocket 消息传递的改进 。
        + 测试改进,最引人注目的是引入了@Commit 来替换@Rollback(false),并引入了 AopTestUtils 实用工具类,允许访问               隐藏在 Spring 代理后面的底层对象。

  • Spring 4.3.x : 该版本包含以下功能 。

        +  完善了编程模型 
        +  在核心容器(包含 ASM5.l 、 CGLIB 3.2.4 以及 spring-core.jar 中的 Objenesis 2.4)和 MVC 方面有了相当大的改进 。
        +  添加了组合注解。
        +  Spring TestContext Framework 需要 JUnit4.12 或更高版本 。
        +  支持新的库,包括 Hibernate ORM 5.2 、 Hibernate Validator 5.3 、 Tomcat 8 .5 和 9 .0 、 Jackson 2.8 等。

  • Spring 5.x:这是一个主要版本。 整个框架代码库都基于 Java 8 , 并且自 2016 年 7 月起与 Java 9 完全兼容 。

        + 支持 portlet、 Velocity、 JasperReports、 XMLBeans、 JDO、 Guava 、 Tiles 2 和 Hibernate 3 。
        + 现在, XML 配置名称空间被流式传输到未版本化的模式; 虽然特定版本的声明仍然被支持,但要针对
           最新的 XSD 架构进行验证 。
        + 充分利用 Java 8 的强大功能,从而在性能上得到极大的改进。
        + Resource 抽象为防御 getFile 访问提供了 isFile 指示符。
        + Spring 提供的 Filter 实现完全支持 Servlet 3.1 签名 。
        + 支持 Protobuf3.0 。
        +支持 JMS2.0+和 JPA 2.1+。
        + 引入了 Spring Web Flow , 这是一个用于替代 SpringMVC 的项目,构建在反应式基础之上,这意味着它完全是异步和              非阻塞的,主要用于事件循环执行模型 , 而非传统的每个请求执行模型都带有一个线程的大型线程池(基于 Project                    Reactor 构建) 。
        + Web 和核心模块适用于反应式编程模型。
        + Spring 测试模块有了很大的改进。 现在支持 JUnit5 ,引入了新的注解来支持 Jupiter 编程和扩展模型,例如@                             SpringJUnitConfig、@SpringJUnitWebConfig、@Enabledlf 和 @Disabledlf。
        + 支持在 Spring TestContext Framework 中实现并行测试执行 

 

         可以从 SourceForge 站点下载 Spring 的早期版本(包括 0.9 版本):

         https://sourceforge.net/projects/springframework/files/springframework/

一、spring框架的演变 微服务架构的演变过程 阅读详情

相关推荐

Java Spring 框架技术从入门到放弃:Spring生态之Spring 框架概述学习笔记,Spring 框架是什么,Spring 核心功能与模块,Spring 框架的优势

Java Spring 框架技术从入门到放弃:Spring生态之Spring 框架概述学习笔记,Spring 框架是什么,Spring 核心功能与模块,Spring 框架的优势

zl515035644的博客 1218

【笔记】《Expert One on One J2EE Design And Development》笔记

博主:该书是Spring框架的起源,J2EE(JavaEE)圣经,重要性自不多言。注意:该书出版时间是2004年。仅需阅读自己关注的部分。 1. 三层结构(P27) C1 讨论J2EE的架构,分布式架构下是否必须使用EJB组件。我不甚关心此章。不过作者提到的三层结构与我的认识不同。 1. Enterprise Information System(EIS) Tier 有时也叫 Integ...

huanqing2010的专栏 1865

expert one-on-one j2ee design and development 英文版 pdf

expert one-on-one,一本讲述Spring MVC开发的经典书,英文版,带目录,你值得拥有

Spring成长之路-SpringIoC

Spring容器如何运行;Spring容器创建对象的几种方法;Spring容器实现自动装配和依赖注入的机制

m0_68772878的博客 1159

Expert One-on-One J2EE Design and Development

 What is this book about? The results of using J2EE in practice are often disappointing: applications are often slow, unduly complex, and take too long to develop. Rod Johnson believes that the problem lies not in J2EE itself, but in that it is often used badly. Many J2EE publications advocate approaches that, while fine in theory, often fail in reality, or deliver no real business value. "Expert One-on-One: J2EE Design and Development" aims to demystify J2EE development. Using a practical focus, it shows how to use J2EE technologies to reduce, rather than increase, complexity. Rod draws on his experience of designing successful high-volume J2EE applications and salvaging failing projects, as well as intimate knowledge of the J2EE specifications, to offer a real-world, how-to guide on how you too can make J2EE work in practice. It will help you to solve common problems with J2EE and avoid the expensive mistakes often made in J2EE projects. It will guide you through the complexity of the J2EE services and APIs to enable you to build the simplest possible solution, on time and on budget. Rod takes a practical, pragmatic approach, questioning J2EE orthodoxy where it has failed to deliver results in practice and instead suggesting effective, proven approaches. What does this book cover? In this book, you will learn When to use a distributed architecture When and how to use EJB How to develop an efficient data access strategy How to design a clean and maintainable web interface How to design J2EE applications for performance Who is this book for? This book would be of value to most enterprise developers. Although some of the discussion (for example, on performance and scalability) would be most relevant to architects and lead developers, the practical focus would make it useful to anyone with some familiarity with J2EE. Because of the complete design-deployment coverage, a less advanced developer could work through the book along with a more introductory text, and successfully build and understand the sample application. This comprehensive coverage would also be useful to developers in smaller organisations, who might be called upon to fill several normally distinct roles. What is special about this book? Wondering what differentiates this book from others like it in the market? Take a look: It does not just discuss technology, but stress its practical application. The book is driven from the need to solve common tasks, rather than by the elements of J2EE. It discuss risks in J2EE development It takes the reader through the entire design, development and build process of a non-trivial application. This wouldn't be compressed into one or two chapters, like the Java Pet Store, but would be a realistic example comparable to the complexity of applications readers would need to build. At each point in the design, alternative choices would be discussed. This would be important both where there's a real problem with the obvious alternative, and where the obvious alternatives are perhaps equally valid. It emphasizes the use of OO design and design patterns in J2EE, without becoming a theoretical book ,高清文档 

Hermes-Agent-完整指南

Hermes Agent 是由 **Nous Research** 开发的一款**自我改进型 AI Agent**,具有内置的学习闭环系统。它的核心理念是"一个与你共同成长的 Agent"。- 能够从经验中创建技能(Skill-Learning Automated),在使用过程中自我改进, 跨会话持久记忆, 深度用户建模

liu_zhiyi的博客 3030

一篇文章带你学Spring从入门到精通

Spring学习笔记,入门到精通

喵喵喵喵~我是一个程序员而已 909

MT6768平台Sensor Bring Up全流程实战:从驱动添加到问题排查(附避坑指南)

本文详细介绍了联发科MT6768平台Sensor Bring Up的全流程实战指南,从驱动添加、硬件配置到问题排查,提供了全面的避坑建议。内容涵盖环境准备、驱动文件集成、硬件接口配置、编译系统适配以及常见问题解决方案,帮助开发者高效完成传感器集成与调试工作。

weixin_30374009的博客 416

spring成长1

注解,常见注解 就是一个类,用@注解命名 开发中用注解取代xml配置文件 注解扫描 <context:component-scan base-package="com.cn.peng"/> 使用@Component,取代<bean class=""/> ,任意bean web开发中使用@Component注解的衍生注解 @Re...

csdnHuiTailang的博客 298

Type-c超声波切割刀

接下来,我将提供Type-C超声波切割刀项目的C代码实现示例,代码将按照上述分层架构和模块化设计进行组织。为了达到3000行以上的代码量,我将尽可能详细地实现各个模块的功能,并添加必要的注释和错误处理。通过采用分层架构和模块化设计,我们可以建立一个可靠、高效、可扩展的系统平台,为产品的成功奠定坚实的基础。实际项目中,需要更详细的硬件驱动、更完善的功能模块、更严格的测试验证和更周全的维护升级计划。针对Type-C超声波切割刀这个项目,我将从以下几个方面详细阐述最适合的代码设计架构,并提供具体的C代码实现。

lianmengde的博客 1189

ABB机器人姿态与四元数(笔记)

通常使用机器人作业时,机器人的法兰轴(5轴)往往是垂直与作业平面的,此时需要将机器人的姿态调整(示教)到垂直于工作平面的状态,然后记录当前的姿态,作为之后作业的参考标准姿态。不同机器人表示控件姿态的方式不一样,但也无外乎3中:旋转矩阵、欧拉角和四元数。 ABB机器人使用的是四元数(可转欧拉角)作为机器人控件姿态的表示方式。这里主要是记录在不通过示教的方式下,如何定义四元数,使机器人达到垂直于工作平面的姿态。 5轴竖直向下(常用):此时,各轴角度为 [0,0,0,0,9...

Zythonista的博客 1万+

Java之美[从菜鸟到高手演变]之spring框架初识

spring是一个轻量级Java框架,其核心思想就是DI(Dependency Injection,即依赖注入)和IoC(Inversion of Control,即控制反转),因为其开源、低侵入性,现在已经席卷了很大一部分市场,其最大竞争对手乃是JavaEE框架EJB。

智慧演绎,无处不在 5万+

第四章 自定义组件、动画

第三章 自定义组件、动画 (一)自定义View 1.1) onMeasure:对当前View的尺寸进行测量 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) widthMeasureSpec和heightMeasureSpec包含测量模式和尺寸大小 int widthMode = MeasureSpec....

Stay Hungry Stay Foolish 求知若饥 虚心若愚 8130

Spring框架的演变

什么是Spring 如果想要解释Spring,那么最难的部分就是对其进行分类。通常情况下,Spring被描述为构建Java应用程序的轻量级框架,但这种描述带来了两个有趣的观点。 首先,与许多其他框架(比如仅限于Web应用程序的Apache Struts)不同,可以使用Spring构建Java中的任何应用程序(例如,独立的应用程序、Web应用程序或JEE应用程序)。 其次,该描述中轻量级的,因...

weixin_30856725的博客 290

《网络安全自学教程》- MySQL脱库原理和步骤

MySQL脱库,脱库的原理,怎么脱库,脱库的步骤,一库三表六字段

wangyuxiang946的博客 1万+

【ESP32使用MAX98357播放音频】

在物联网和智能家居领域,音频播放功能越来越受到重视。ESP32作为一款功能强大的微控制器,结合MAX98357音频放大器模块,可以实现高品质的音频播放。本文将详细介绍如何使用ESP32的I2S接口通过MAX98357进行音频播放。

vor234的博客 7526

Spring框架学习笔记

超详细的Spring个人学习笔记

kamiasuka的个人博客 1197

在 Visual Studio Code 中开发 SAP Fiori 应用并部署到 Cloud Foundry 的完整实战指南

摘要:本文介绍如何以ABAP RAP服务为后端,通过VS Code和SAP Fiori工具将Fiori应用一键部署到SAP BTP Cloud Foundry环境。主要内容包括:1) 开发环境配置(VS Code+Fiori工具);2) 架构流程说明(MTA打包、Approuter路由);3) 权限准备(业务Catalog分配);4) 创建带Approuter的MTA项目;5) 连接ABAP OData服务并生成Fiori应用。文中还针对常见问题(如服务不可见、部署失败)提供了解决方案参考。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 364

spring包装hibernate_Spring 入门及历史演变之路

Spring 的今生Spring 是什么一句话让你明白:Spring 是一个开发应用框架。在企业里的开发不是从零开始一点点敲进去的,而是往框架里填充内容。就好比我们在Leetcode做题时,不需要写 signature,而是直接往里写函数内容,这也算是个简陋的框架。而 Spring 是一个开源的、轻量级的、Java SE 开发应用框架。轻和重,都是相对而言,我会在下文讲到 EJB 的时候解释何为轻...

weixin_39612653的博客 145

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【Spring框架 二】

Spring 数据访问框架极大地简化了数据访问层的开发,提供了强大的抽象和工具,使开发者能够专注于业务逻辑而不是底层细节。无论是使用传统的关系型数据库还是现代的 NoSQL 数据库,Spring 都能提供一致且高效的解决方案。希望这些介绍和示例能帮助你更好地理解和使用 Spring 数据访问框架。如果有任何具体问题或需要进一步的帮助,欢迎评论或者私信我。

Snow的博客 884

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Spring 学习笔记

(例如,SSM,SSM 框架是 Spring + Spring MVC + MyBatis 的组合,通常用于 Java Web 开发中。),framework 的含义是框架。多个框架组合在一起就是。

qq_39748832的博客 1110

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

spring框架 二

前面在spring框架 一中,我们使用了配置文件的方式来获取对象,以及两种注入方式,下面介绍使用注解来获取对象组件扫描(component scanning): Spring 能够从 classpath 下自动扫描, 侦测和实例化具有特定注解的组件.特定组件包括:@Component: 基本注解, 标识了一个受 Spring 管理的组件@Respository: 标识持久层组件@Service: 标识服务层(业务层)组件@Controller: 标识表现层组件对于扫描到的组件, Spring 有默认的命名策

2301_79472235的博客 1747

java框架学习顺序_Java学习笔记(二)spring框架(内附学习教程)

身为一个程序员,对我们来说重要的一个特性是什么?不善言谈?NO!钢铁直男(女)?NO!认真负责?NO!一个优良的传统就是:分享!相信没有哪一个行业,能跟程序员一样敢于分享自己的技术,敢于分享自己的观点的了!各大技术网站总能看到篇篇详细的技术博客,共同进步才是技术的真正的提升!身为刚刚毕业的一个大学生,虽然没有大佬的知识渊博,但总想将自己的学习笔记记录下来,每一个技术点都整理下来,总有后来之辈能够用...

weixin_39927623的博客 535

Spring-学习笔记01【Spring框架简介】

Spring-学习笔记01【Spring框架简介】

upward 633

实验二 Spring框架实验

Spring框架实验

slzwsjjzzbxy的博客 1180
上一篇: 一 、 Spring 学习笔记 之 什么是Spring ?
下一篇: Google浏览器 版本 79.0.3945.88 F12 调试 js 文件 字体显示黑色,看不到变量 解决办法
程序猿明天
博客等级 码龄11年 18粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值