Spring是什么?

Spring是什么?

Spring是Java EE编程领域的一款轻量级的开源框架,由被称为“Spring之父”的Rod Johnson于2002年时提出并创立,它的目标就是要简化java企业级应用程序的开发难度和周期

Spring自诞生以来备受青睐,一直被广大开发人员作为Java企业级应用程序开发的首选。时至今日,Spring俨然成为了Java EE的代名词,成为构建Java EE应用的事实标准

Spring 的诞生与发展

早期的J2EE(Java EE平台)推崇以EJB为核心的开发方式,但这种开发方式在实际的开发过程中存在种种弊端,例如使用复杂、代码臃肿、代码侵入性强、开发周期长、移植难度大等。

Rod Johnson在其2002年编著的畅销书《Expert One-on-One J2EE Design and Development》中,针对EJB各种臃肿的结构进行了逐一的分析和否定,并分别以更加简洁的方法进行了替换

在这本书中,Rod Johnson通过一个包含3万行代码的附件,展示了如何在不适用EJB的情况下构建一个高质量、可扩展的Java应用程序。在这个附件中,Rod Johnson编写了上万行基础结构代码,其中包含了许多可重用的Java接口和类,例如ApplicationContext、BeanFactory等。这些类的根包被命名为com.interface21,含义为:这里提供给21世纪的一个参考

这本书影响甚远,后来Rod Johnson将com.interface21的代码开源,并把这个新框架命名为“Spring”,含义为:Spring像一缕春风一样,扫平传统J2EE的寒冬

2003年2月,spring 0.9版本发布,它采用了Apache 2.0开源协议;2004年4月,Spring1.0版本正式发布。到目前为止,Spring已经步入到第5个大版本,也就是我们所说的Spring 5

Spring 的狭义和广义

在不同的语境中,Spring所代表的含义是不同的。下面我们就分别从“广义”和“狭义”两个角度,对Spring进行介绍。

广义的SPring泛指以Spring Framework为核心的Spring技术栈

经过十多年的发展,Spring已经不再是一个单纯的应用框架,而是逐渐发展成为一个由多个不同子项目(模块)组成的成熟技术,例如Spring Framework、Spring MV、SpringBoot、SpringCloud、SpringData、SpringSecurity等,其中SpringFramework是其他子项目的基础

这些子项目涵盖了从企业级应用开发到云计算等各方面的内容,能够帮助开发人员解决软件发展过程中不断产生的各种实际问题,给开发人员带来了更好的开发体验

项目名称描述
SpringDataSpring提供的数据访问模块,对JDBC和ORM提供了很好的支持。通过它开发人员可以使用一种相对统一的方式,来访问位于不同类型数据库中的数据
SpringBatch一款专门针对企业级系统中的日常批处理任务的轻量级框架,能够帮助开发人员方便的开发出健壮、高效的批处理应用程序
SpringSecurity前身为Acegi,是Spring中较为成熟的子模块之一。它是一款可以定制化的身份验证和访问控制框架
SpringMobile是对SpringMVC的扩展,用来简化移动端Web应用的开发
SpringBoot是Spring团队提供的全新框架,它为Spring以及第三方库一些开箱即用的配置,可以简化Spring应用的搭建以及开发过程
SpringCloud一款基于Spring Boot实现的微服务框架。它并不是一门技术,而是一些列微服务解决方案或者框架的有序集合。它将市面上成熟的、经过验证的微服务框架整合起来,并通过SpringBoot的思想进行再封装,屏蔽其中复杂的配置和实现原理,最终为开发人元提供了一套简单易懂、易部署和易维护的分布式系统开发工具包

狭义的Spring:Spring Framework

狭义的Spring特指Spring Framework,通常我们将它称为Spring框架

Spring框架是一个分层的、面向切面的Java应用程序的一站式轻量级解决方案,它是spring技术栈的核心和基础,是为了解决企业级应用开发的复杂性而创建的

spring有两个核心部分:Ioc和Aop

核心描述
IOCInverse of Control的简写,译为“控制反转”,指把创建对象过程交给Sping进行管理
AOPAspect Oriented Programming 的简写,译为“面向切面编程”。 AOP 用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。 另外,AOP 还解决一些系统层面上的问题,比如日志、事务、权限等。

spring是一种基于Bean的编程技术,它深刻地改变着Java开发世界。Spring使用简单、基本的Java Bean来完成以前只有EJB才能完成的工作,使得很多复杂的代码变得简洁和优雅,避免了EJB臃肿、低效的开发模式,极大的方便项目的后期维护、升级和扩展。

在实际开发中,服务器段应用程序通常采用三层体系架构,分别为表现层(web)、业务逻辑层(service)、持久层(dao)

Spring 是一种基于 Bean 的编程技术,它深刻地改变着 Java 开发世界。Spring 使用简单、基本的 Java Bean 来完成以前只有 EJB 才能完成的工作,使得很多复杂的代码变得优雅和简洁,避免了 EJB 臃肿、低效的开发模式,极大的方便项目的后期维护、升级和扩展。

在实际开发中,服务器端应用程序通常采用三层体系架构,分别为表现层(web)、业务逻辑层(service)、持久层(dao)。

Spring 致力于 Java EE 应用各层的解决方案,对每一层都提供了技术支持。

  • 在表现层提供了对 Spring MVC、Struts2 等框架的整合;
  • 在业务逻辑层提供了管理事务和记录日志的功能;
  • 在持久层还可以整合 MyBatis、Hibernate 和 JdbcTemplate 等技术,对数据库进行访问。

这充分地体现了 Spring 是一个全面的解决方案,对于那些已经有较好解决方案的领域,Spring 绝不做重复的事情。

从设计上看,Spring 框架给予了 Java 程序员更高的自由度,对业界的常见问题也提供了良好的解决方案,因此在开源社区受到了广泛的欢迎,并且被大部分公司作为 Java 项目开发的首选框架。

Spring Framework 的特点

Spring 框架具有以下几个特点。

方便解耦,简化开发

Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。

方便集成各种优秀框架

Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如 Struts2、Hibernate、MyBatis 等)的直接支持。

降低 Java EE API 的使用难度

Spring 对 Java EE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等)都提供了封装,使这些 API 应用的难度大大降低。

方便程序的测试

Spring 支持 JUnit4,可以通过注解方便地测试 Spring 程序。

AOP 编程的支持

Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值