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。
上述优点与缺点都是结合自己的经验而写出来的,是自己在学习中一小点点时间,有什么不对之处,亲!请多多指点!