视频看完有段时间了,一直在总结,看了别人的不少总结,感觉都写的很好,不过很多都是注重了知识点的总结,缺少宏观上的指导,比如:Spring里出名的IoC容器,只说了它的概念,然后给个代码的示例就算完成总结了。我觉得总结就应该像老师经常说的那样,先宏观上说说,然后再具体介绍知识点,甚至是具体的知识点可以简单的说说就行,因为那些个知识点在帮助文档里介绍的很详细了,用的时候查一下就OK。
下面就SSH里的Spring谈谈它究竟哪儿好?为什么有人要在项目里使用它?它能给我们带来什么?其实也不完全是出自我个人的工程经验,大都是看别人的总结把我认为不错的地方加以修改总结到一起的,希望能够给大家带来帮助,也希望正在学习Spring的同志们能够受到一点启发,同时也是给自己留着以后回顾的时候可以看看。
Spring为何而生?
开发人员都知道Java EE框架下企业级开发采用EJB框架存在一些不足:
1、 EJB比较笨重,而且Entity EJB不能脱离容器
2、 企业级服务使用比较困难
3、 开发的复杂度也比较高
4、 它是侵入式方案设计,EJB需要使用特定的接口
为了优化解决这些个问题,Spring就应用而生了…
Spring有哪些作用,为什么要用它?
1、 简化了企业级开发
a) 封装了大部分的企业级服务,提供了更好的访问这些个服务的方式
b) 提供了IoC、AOP等功能的容器,实现松耦合,更加方便编程和维护
2、 遵守Spring框架的应用程序,一般都是设计良好的针对接口编程,这样可以简化企业级程序的设计。
3、 Spring的基本结构(看图)
a) SpringCore:核心容器,提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IoC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
b) SpringContext:ApplicationContext,扩展核心容器,提供事件处理、国际化等功能。它提供了一些企业级服务的功能,如提供了JNDI,EJB,RMI的支持。
c) SpringAOP:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB组件,就可以将声明性事务管理集成到应用程序中,我们主要应用的就是它的声明式事务的能力。
d) SpringDAO:JDBC 、DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
e) Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JPA、TopLick、OJB、JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
f) SpringWeb 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
g) SpringMVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
总结:Spring对企业级服务进行了进一步的封装,简化了企业级开发。同时采用它也就意味着进行了良好的分层设计,并保证了面向接口编程,加上它的IoC和AOP容器的优势,更加方便我们后期的维护工作,但是由于容器大量的使用反射机制装配对象,一定会影响性能,对于一些高并发的大型应用我们还是要慎用。