大部分项目都少不了Spring的身影,咱们看一个框架是否优秀,首先看这个框架是不是非侵入式的,其次是可扩展性,再次是解耦性和开发周期。
Spring是一个轻量级的DI和AOP容器框架。说它轻量级有一大部分缘由是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的(所谓非侵入式就是远程调试 而不植入,spring再也不用new的方式来建立对象,而是使用依赖注入的方式),基于spring开发的应用通常不依赖于spring的类。
DI:称做依赖注入(Dependency Injection),和控制反转一个概念,具体的讲,当一个角色须要另一个角色协助的时候,在传统的程序设计中,一般有调用者来建立被调用者的实例。可是在spring中建立被调用者将再也不有调用者完成,所以叫控制反转。建立被调用对象有Spring来完成,在容器实例化对象的时候主动的将被调用者(或者说它的依赖对象)注入给调用对象,所以又叫依赖注入。
AOP:Spring对面向切面编程提供了强有力的支持,经过它让咱们将业务逻辑从应用服务(如事务管理)中分离出来,实现了高内聚开发(所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。),应用对象只关注业务逻辑,再也不负责其它系统问题(如日志、事务等)。Spring支持用户自定义切面。
面向切面编程是面向对象编程的有力补充。面向对象编程将程序分红各个层次的对象,面向切面的程序将运行过程分解成各个切面。AOP是从运行程序的角度去考虑程序的结构,提取业务处理过程的切面,OOP是静态的抽象,AOP是动态的抽象,是对应用执行过程的步骤进行抽象,从而得到步骤之间的逻辑划分。
容器:Spring是个容器,由于它包含而且管理应用对象的生命周期和配置。如对象的建立、销毁、回调等。
框架:Spring做为一个框架,提供了一些基础功能,(如事务管理,持久层集成等),使开发人员更专一于开发应用逻辑。
在了解了Spring及其相关的概念以后,再来看看Spring有哪些优势:
1.使用Spring的IOC容器,将对象之间的依赖关系交给Spring,下降组件之间的耦合性,让咱们更专一于应用逻辑;
2.能够提供众多服务,事务管理,WS等;
3.AOP的很好支持,方便面向切面编程;
4.对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA等;
5.Spring DI机制下降了业务对象替换的复杂性;
6.Spring属于低侵入,代码污染极低;
7.Spring的高度可开放性,并不强制依赖于Spring,开发者能够自由选择Spring部分或所有。
再来看看Spring有哪些缺点:
1.jsp中要写不少代码、控制器过于灵活,缺乏一个公用控制器;
2.Spring不支持分布式,这也是EJB仍然在用的缘由之一。
spring