Spring由来:当J2EE应用程序广泛使用的时候,出现了事务管理之类的核心中间层概念的标准化,但是在众多的时间活动中,都没有很好的办法解决。
由于用EJB开发J2EE应用的人,都知道EJB要严格地继承各种不同类型的接口,类似的或者重复的大量的代码存在。配置也相对很单调和复杂,同样适用JNDI进行对象查询的代码也是单调而枯燥。虽然xdoclet的出现,而有所缓解,但是学习EJB的高昂代价和极低的开发效率,极高的资源消耗,都造成了EJB的适用困难。而Spring的横空出世,就是为了解决这些问题。使用Spring的一个最大的目的就是使J2EE开发更加容易,致力于一个以统一的高效的方式构造整个应用,并将单层框架(Struts、Hibernate)以最佳的组合糅合在一起建立一个连贯的体系。
1.J2EE开始应该更加简单
2.使用接口而不是使用类,是更好的编程习惯。Spring将使用接口的复杂度几乎降低到了零。
3.为JavaBean提供了一个更好的应用配置框架
4.更多的强调面向对象设计,而不是现行的技术
5.尽量减少不必要的异常捕捉
6.使用应程序更加容易测试
1.可以令人方便愉快的使用Spring
2.应用程序代码并不依赖于Spring APIs
3.Spring不和现有解决方案竞争,而是致力于将他们融合在一起。
1.最完善的轻量级核心框架
2.通用的事务管理抽象层
3.JDBC抽象层
4.集成了Toplink,Hibernate,JDOand iBATIS SQL Maps
5.AOP功能
6.灵活的MVC Web应用框架
1.Spring Core:核心容器,BeanFactory(控制反转)提供了组件声明周期管理,组件的穿件,封装,销毁等功能。
2.SpringContext:ApplicationContext,扩展核心容器,提供事件处理,国际化等功能。它提供了一些企业级服务的功能,提供了JNDI,EJB,RMI的支持。
3.Spring AOP:提供切面支持
4.SpringDAO:提供事务支持,JDBC,DAO支持
5.Spring ORM:对流行的O/RMapping封装或支持
6.Spring Web:提供Web应用上下文,对Web开发提供上的支持,如请求,表单,异常等
7.Spring Web MVC:全功能MVC框架,作用等同于Struts
1. Spring能够有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的API特制的framework,spring致力于解决剩下的问题。
2. Spring能够消除在工程中常见的对Singleton的过多使用。
3. 通过把对接口编程而不是对垒编程的代价几乎减少到没有,Spring能够促进编程习惯的养成。
4. Spring能使EJB的使用成为一个实现选择,而不是必然选择。你能够选择用POJOs或Iocal EJBs来实现业务接口,而不影响调用代码。
5. Spring帮助你解决了许多问题而不需要EJB。Spring能提供一种EJB的代替物,它们适用于许多web应用。例如:Spring能够使用AOP提供声明式事务管理而不通过EJB容器,如果你仅仅需要与单个数据库打交道,甚至不需要一个JTA实现。
6. Spring为数据存取提供了一个一致的框架,无论是使用JDBC还是O/R mapping产品(如Hibernate)。
7. 易于建立测试单元
1. 降低了可测试性和面向对象程度
2. 中断了应用程序的逻辑,是代码变得不完整,不直观
3. 后期维护比较困难
Spring的七个模块我们以前都涉及过,我们可以和以前拥有的知识产生联系。
Spring是一个轻量级的控制反转(IoP)和面向切面(AOP)的容器框架(是Spring的重头戏,详细介绍),Spring MVC(稍后详细介绍)
知识共鸣点:
SpringDAO:Spring+struts1+hibernate集成项目中,异常层次结构简化错误处理,这样异常,由Spring本身处理。
Spring ORM:Hibernate的应用
Spring Web模块:Spring+struts1集成的项目中
Spring Context:包括企业服务,国际化,电子邮件,校验,调度功能,EJB和JNDI。
上述优点与缺点都是结合自己的经验而写出来的,是自己在学习中一小点点时间,有什么不对之处,亲!请多多指点!