跳转到内容

Spring Framework

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是本页的一个历史版本,由138.19.243.97留言2020年9月16日 (三) 02:58 事务管理编辑。这可能和当前版本存在着巨大的差异。

Spring Framework
開發者Pivotal
首次发布2002年10月1日,​22年前​(2002-10-01
当前版本5.0.4.RELEASE [1](2018年2月19日 (2018-02-19)
源代码库 編輯維基數據鏈接
编程语言Java
操作系统跨平台
平台JVM
类型Application framework
许可协议Apache License 2.0
网站spring.io

Spring框架Java 平台的一个开源的全栈(Full-stack)应用程序框架控制反转容器实现,一般被直接称为 Spring。该框架的一些核心功能理论上可用于任何 Java 应用,但 Spring 还为基于Java企业版平台构建的 Web 应用提供了大量的拓展支持。Spring 没有直接实现任何的编程模型,但它已经在 Java 社区中广为流行,基本上完全代替了企业级JavaBeans(EJB)模型。

Spring框架以 Apache License 2.0 开源许可协议的形式发布,该框架最初由 Rod Johnson 以及 Juergen Hoeller 等人开发。

版本历史

第一版由 Rod Johnson英语Rod Johnson (programmer) 开发,并在2002年10月发布在 Expert One-on-One J2EE Design and Development 一书中。2003年6月,Spring Framework 第一次发布在 Apache 2.0 许可证下。2004年3月,发布了里程碑的版本1.0,2004年9月以及2005年3月,又发布了新的里程碑版本。2006年,Spring Framework 获得了 Jolt 生产力奖JAX 创新奖[2][3]

2006年10月发布Spring 2.0,2007年11月 Spring 2.5,2009年12月 Spring 3.0,2011年 Spring 3.1,2013年11月 Spring 3.2.5,2013年12月发布了4.0版本。[4]值得注意的是,Spring 4.0 版本中增加了对 Java SE 8, Groovy 2, Java EE 7 的一些方面以及 WebSocket 的支持。

2017年9月 Spring Framework 正式发布了 5.0 版本,此版本引入了 Spring WebFlux,一个高性能、响应式、异步的 Web 框架。Spring 5.0 重点加强了对函数式编程、响应式程序设计(reactive programming)的支持能力,是一个非常大的进步。

核心功能模块

  • 强大的基于 JavaBeans 的采用控制反转(Inversion of Control,IoC)原则的配置管理,使得应用程序的组建更加简易快捷。
  • 数据库事务的一般化抽象层,允许声明式(Declarative)事务管理器,简化事务的划分使之与底层无关。
  • 内建的针对 JTA 和单个 JDBC 数据源的一般化策略,使Spring的事务支持不要求 Java EE 环境,这与一般的 JTA 或者 EJB CMT 相反。
  • JDBC 抽象层提供了有针对性的异常等级(不再从 SQL 异常中提取原始代码),简化了错误处理,大大减少了程序员的编码量。再次利用 JDBC 时,你无需再写出另一个'终止'(finally)模块。并且面向 JDBC 的异常与 Spring 通用数据访问对象(Data Access Object)异常等级相一致。
  • 以资源容器,DAO 实现和事务策略等形式与 HibernateJDOMyBatisSQL Maps 集成。利用控制反转机制全面解决了许多典型的 Hibernate 集成问题。所有这些全部遵从 Spring 通用事务处理和通用数据访问对象异常等级规范。
  • 灵活的基于核心 Spring 功能的 MVC 网页应用程序框架。开发者通过策略接口将拥有对该框架的高度控制,因而该框架将适应于多种呈现(View)技术,例如 JSPFreeMarkerVelocityThymeleaf 等。值得注意的是,Spring 中间层可以轻易地结合于任何基于 MVC 框架的网页层,例如 StrutsWebWorkTapestry
  • 提供诸如事务管理等服务的AOP框架。

在设计应用程序 Model 时,MVC模式(例如 Struts)通常难于给出一个简洁明了的框架结构。Spring 却具有能够让这部分工作变得简单的能力。程序开发员们可以使用Spring的JDBC抽象层重新设计那些复杂的框架结构。


IOC(Inverse Of Control)控制反转,即把创建对象的权利交给框架,也就是指将对象的创建、对象的存储、对象的管理交给了spring容器。 (spring容器是spring中的一个核心模块,用于管理对象,底层可以理解为是一个map集合)

之前我们当需要对象时,通常是利用new关键字创建一个对象:

——/* 获取Service接口的子类实例
——* 这里使用new对象的方式造成了程序之间的耦合性提升 */
—— private EmpService service = new EmpServiceImpl();
——//private EmpService service = (EmpService)BeanFactory.getBean("EmpService");

但由于new对象,会提高类和类之间的依赖关系,即代码之间的耦合性。

而现在我们可以将对象的创建交给框架来做:

——/* 获取Service接口的子类实例
——* 这里使用new对象的方式造成了程序之间的耦合性提升 */
——//private EmpService service = new EmpServiceImpl();
——private EmpService service = (EmpService)BeanFactory.getBean("EmpService");

只需要将类提前配置在配置文件中,就可以将对象的创建交给框架来做。当需要对象时,不需要自己创建,而是通过框架直接获取即可,省去了new对象的过程,自然就降低类和类之间的依赖关系,也就是耦合性。


处理访问(DAO层支持)



Spring框架为事务管理提供了一致的抽象, 具有以下优点: + 跨不同事务API(如Java事务JTA. JDBC, Hibernate和Java Persistence API事务JPA)的一致编程模型 + 支持声明式事务 + 与诸如JTA之类的复杂事务API相比, 用于程序化事务管理的API更简单 + 与Spring的数据访问抽象出色集成

Spring MVC

约定大于配置”的快速应用开发

Spring Boot

Spring Batch


整合框架

相关链接

参考资料