为什么要使用Spring框架

  • 简化java开发(Spring的根本使命)
  1. 话说很久以前,使用的EJB(Enterprise Java Bean),但是它存在很多问题:1、业务类需要与EJB 框架紧耦合,必须编写多个接口才能创建业务组件,2、EJB 编程模型将开发人员引向了面向过程程序设计风格等。。。
  2. 后来,与EJB 编程模型完全不同的POJO 编程模型发展起来了。(POJO - Plain Old Java Object 一词被发明出来,是为了描述那些:不需要实现任何特定接口或者扩展自某一特定框架类的最简单的类。它也使得我们可以专注于从面向对象的角度来编写代码。
  3. 基于POJO 编程模型产生了很多框架,在这其中Spring Framework 是最成功的一个框架(虽然在EJB 3.X 中,EJB的问题大部分都已经得到了解决,EJB 规范也引入了POJO 编程模型,不过Spring Framework 已经发展壮大了)
  4. 我们为什么需要Spring Framework ?

         在EJB 2.X 这个历史时间阶段上,由于其本身的设计问题,导致使用EJB 模型来开发会提高复杂度,这其中最重要的问题是:业务类需要与EJB 框架紧耦合。

         而在这个时间节点上诞生的Spring Framework ,给我们提供了更简单易用的一个选择。业务代码纯粹,我们业务代码不必依赖框架中服务的API,且这些服务是可插拔的。(业务代码纯粹、服务可插拔)

  • 轻量级
  1. 容器:就是一组提供一系列服务的管理器
  2. 划分一个应用是否属于轻量级还是重量级,主要看它使用了多少服务,使用的服务越多,容器要为普通java对象做的工作就越多,必然会影响到应用的发布时间或者是运行性能.
  3. 对于spring容器,它提供了很多服务,但这些服务并不是默认为应用打开的,应用需要某种服务,还需要指明使用该服务,如果应用使用的服务很少,如:只使用了spring核心服务,那么我们可以认为此时应用属于轻量级的,如果应用使用了spring提供的大部分服务,这时应用就属于重量级。目前EJB容器就因为它默认为应用提供了EJB规范中所有的功能,所以它属于重量级。

 

  • 非侵入性
  1. 不强制类要实现Spring的任何接口或类,没有任何地方表明它是一个Spring组件
  2. Spring应用中的对象不依赖于Spring的特定类。
  • 松耦合
  1. 通常,我们开发的java应用都是由多个类组成,它们之间相互协作来完成特定的业务逻辑。每个对象之间相互联系,导致高度耦合的代码。
  2. 通过DI(依赖注入)实现应用对象彼此之间保持松散耦合, 对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进行设定。 对象无需自行创建或管理它们的依赖关系
  3. Spring应用上下文全权负责对象的创建和组装
  • 声明式编程-抽象程度更高
  1. 面向切面编程(aspect-oriented programming, AOP) 允许你把遍布应用各处的功能分离出来形成可重用的组件。
  2. AOP能够使这些功能服务模块化, 并以声明的方式将它们应用到它们需要影响的组件中去。 所造成的结果就是这些组件会具有更高的内聚性并且会更加关注自身的业务, 完全不需要了解涉及系统服务所带来复杂性。 总之, AOP能够确保POJO的简单性。
声明式编程:专注于”做什么”而不是”如何去做”。在更高层面写代码,更关心的是目标,而不是底层算法实现的过程。 
例如: css, 正则表达式,sql 语句,html, xml…

命令式编程(过程式编程) : 专注于”如何去做”,这样不管”做什么”,都会按照你的命令去做。解决某一问题的具体算法实现。

函数式编程:把运算过程尽量写成一系列嵌套的函数调用。 
函数式编程强调没有”副作用”,意味着函数要保持独立,所有功能就是返回一个新的值,没有其他行为,尤其是不得修改外部变量的值。 
所谓”副作用”(side effect),指的是函数内部与外部互动(最典型的情况,就是修改全局变量的值),产生运算以外的其他结果
  •  使用模板消除样板代码
  1. 样板式的代码:通常为了实现通用的和简单的任务, 不得不一遍遍地重复编写的代码(比如:用JDBC操作数据库时,我们要建立连接、进行预编译、执行具体操作、处理结果集、捕捉异常、关闭连接等,几乎每个请求都有如此才做,导致项目中充斥大量的重复的样板代码)
  2. Spring旨在通过模板封装来消除样板式代码。 Spring的JdbcTemplate使得执行数据库操作时, 避免传统的JDBC样板代码成为了可能。
  • 框架的分层架构
  1. 分层架构允许您自由选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。

 

参考:

  1. https://blog.csdn.net/huanghanqian/article/details/79340762
  2. https://blog.csdn.net/u010297957/article/details/79844379 (为什么我们需要Spring Framework ?)

你可能感兴趣的:(Spring系列)