关于Spirng框架个人总结

来源:互联网 发布:linux ftp访问目录 编辑:程序博客网 时间:2024/06/10 16:23
    -

一:Spring是什么

Spring是一个开源框架,pring使用基本的JavaBean来完成以前只可能由EJB(为了服务集群、分布式应用的)完成的事情。然而,Spring的用途不仅限于服务器端的开发。

简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

按我的理解来说,就是Spring是一个管理着javabean的容器,我们把平时创建、维护类实例的操作给javabean来做(一个方面),这就是控制反转。

Spring的好处:
1.降低组件之间的耦合度,实现软件各层之间的解耦。
2.可以使用容器提供的众多服务,如:事务管理服务、消息服务等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务,也不需处理复杂的事务传播。
3.容器提供单例模式支持,开发人员不再需要自己编写实现代码。
4.容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能。
5.容器提供众多辅助类,使用这些类能够加快应用的开发,如:JdbcTemplate、HibernateTemplate
6.Spring对主流应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等便于应用开发。

二:模块

这里写图片描述

这是Spring框架的概览图了,但是实际上,我们刚开始开发,只是需要哪一块用哪一块导哪一块的包,接下来简单的看看每一块

1.核心容器(core):他里面有一个BeanFactory(就是bean工厂,他很重要!),是最基础也是每个模块所必须的部分,他把我们平时创建、维护类实例的操作转给了Spring容器,实现了把应用配置和实际的代码分离出来了。

2.应用上下文(Context)模块:核心模块的BeanFactory使Spring成为一个容器,而上下文模块使它成为一个框架。这个模块扩展BeanFactory的概念,增加了对国际化(I18N)消息、事件传播以及验证的支持。 另外,这个模块提供了许多企业服务,例如电子邮件、JNDI访问、EJB集成、远程以及时序调度(scheduling)服务。也包括了对模版框架例如Velocity和FreeMarker集成的支持。

3.Spring的AOP模块:面向切面编程的概念,先来个浅显的例子,我们在睡觉前都要闭眼睛,每次睡觉前的闭眼睛这个举动都是一样的,那我们是不是可以把闭眼睛这个举动截取出来,当作一个切面;

将程序中的交叉业务逻辑(公用代码)提取出来,称为切面,
将这些切面动态的织入到目标对象,生成一个新的代理对象的过程;
把程序划分为两部分:
1) 通用的交叉业务,公用的代码(日志,事务,安全,缓存);
2) 具体的业务逻辑处理代码;
将切面动态的织入到业务代码中;

4.JDBC抽象和DAO模块
使用JDBC经常导致大量的重复代码,取得连接、创建语句、处理结果集,然后关闭连接。Spring的JDBC和DAO模块抽取了这些重复代码,因此你可以保持你的数据库访问代码干净简洁,并且可以防止因关闭数据库资源失败而引起的问题。
这个模块还在几种数据库服务器给出的错误消息之上建立了一个有意义的异常层。使你不用再试图破译神秘的私有的SQL错误消息!
另外,这个模块还使用了Spring的AOP模块为Spring应用中的对象提供了事务管理服务。

5.ORM模块-对象/关系映射集成模块
对那些更喜欢使用对象/关系映射工具而不是直接使用JDBC的人,Spring提供了ORM模块。Spring并不试图实现它自己的ORM解决方案,而是为几种流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATIS SQL映射。Spring的事务管理支持这些ORM框架中的每一个也包括JDBC。

6.Spring的Web模块
Web上下文模块建立于应用上下文模块之上,提供了一个适合于Web应用的上下文。另外,这个模块还提供了一些面向服务支持。例如:实现文件上传的multipart请求,它也提供了Spring和其它Web框架的集成,比如Struts、WebWork。

7.Spring的MVC框架
Spring为构建Web应用提供了一个功能全面的MVC框架。虽然Spring可以很容易地与其它MVC框架集成,例如Struts,但Spring的MVC框架使用IOC对控制逻辑和业务对象提供了完全的分离。
它也允许你声明性地将请求参数绑定到你的业务对象中,此外,Spring的MVC框架还可以利用Spring的任何其它服务,例如国际化信息与验证。

名词解释:

控制反转(IOC):是指应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的反转

依赖注入(DI):在运行期,由外部容器动态地将依赖对象注入到组件中。

轻量级与重量级:划分一个应用属于轻量级还是重量级,主要看它使用了多少服务,使用服务越多,容器要为java对象做的工作就越多,必然会影响到应用的发布时间或运行性能。Spring容器提供了很多服务,但这些服务默认是关闭的,当应用需要某种服务的时候,还需要之名将使用该服务,spring默认只使用了spring的核心服务,所以是轻量级的,如果应用使用了spring的大部分服务,则为重量级的。

Spring带来了复杂的J2EE开发的春天。它的核心是轻量级的IoC容器,它的目标是为J2EE应用提供了全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间可以彼此独立,也可以使用其它的框架方案加以代替,Spring希望为企业应用提供一站式(one-stop shop)的解决方案。