1.什么是Spring框架?
Spring是一个开源的控制反转(Inversion of Control , IOC)和面向切面(AOP)的容器框架,它的主要目的是简化企业开发。
2.Spring框架架构图
(1)Spring Core
Spring框架最基础的部分,提供依赖注入来实现容器对Bean的管理,最基本的概念是BeanFactory,它是Spring应用的核心。BeanFactory是工厂模式(用工厂方法代替new方法)的一个实现,它使用IOC奖应用配置和依赖说明从实际的应用代码中分离开来。
(2)Spring Context
核心模块的BeanFactory使Spring成为一个容器,而上下文模块使它成为一个框架。这个模块扩展了BeanFactory的概念,增加了对国际化消息,事件传播以及验证的支持。
另外,据介绍,这个模块还提供许多企业服务,例如电子邮件,JNDI访问,EJB集成,远程以及时序调度服务,对模板框架比如Velocity和FreeMarker集成的支持
(3)Spring AOP
Spring在它 的AOP模块提供了对面向切面编程的丰富支持。Spring的AOP支持AOP联盟定义的API。Spring的AOP模块也将元数据编程引入了Spring。
(4)Spring DAO
以前使用JDBC经常导致重复的代码(取得连接,创建语句,处理结果集,关闭连接),Spring的JDBC和DAO模块抽取了这些重复的代码,因此可以保持数据库的访问代码干净简洁,并可以防止因关闭数据库资源失败而引起的问题。
这个模块使用了Spring的AOP模块为Spring应用的对象提供了事物管理服务。这个模块还在几种数据库服务器给出的错误消息之上建立了一个有意义的异常层。使我们不用试图破译神秘的私有的SQL错误消息。
(5)Spring ORM
Spring 并不试图实现它自己的ORM解决方案,而是为几种流行的ORM框架提供了集成方案,包括Hibernate,JDO和iBatis SQL映射。Spring的事物管理支持这些ORM框架中的每一个也包括JDBC。
(6)Spring Web
web上下文模块建立在应用上下文模块之上,提供了一个适用于web应用的上下文,这个模块还提供了一些面向服务的支持。例如实现文件上传的multipart请求,它提供了Spring和其它web框架的集成,比如struts,webwork。
(7)Spring Web MVC
Spring为构建web应用提供了一个功能全面的MVC框架。虽然Spring可以很容易地与其它MVC框架集成,例如Struts,但Spring的MVC框架使用IOC框架对控制逻辑和业务对象提供完全的分离。它允许你声明性地将请求参数绑定到业务对象中,此外,Spring的MVC框架还可以利用Spring的任何其它服务,例如国际化信息与验证。
3.Spring框架的优点
(1)降低组件之间的耦合度,实现软件各层之间的解耦
(2)可以使用容器提供的众多服务,如事务管理服务,消息服务等等,当使用容器管理事物的时候,开发人员不要手工控制事物,也不再需要处理复杂的事物传播。
(3)容器提供单例模式支持,开发人员不需要提供代码
(4)容器提供AOP支持,利用它很容易实现如权限拦截,运行期监控等功能
(5)Spring对于主流的框架的提供了集成支持,如集成Struts等,这样更便于应用的开发。
(6)Spring是轻量级的框架,对于系统没有侵入性。
名词解释:
轻量级与重量级框架:划分一个应用是否属于轻量级还是重量级,主要看它使用了多少服务,使用的服务越多,容器要为普通java对象做的工作就越多,必然会影响到应用的发布时间或者运行性能。
对于Spring容器,它提供了很多的服务,但这些服务并不是默认为应用打开的,应用需要某种服务,还需要指明使用该服务,如果应用使用的服务很少,如只使用了Spring提供的核心服务,那么就属于轻量级,如果应用使用了Spring提供的大部分服务,那么就属于重量级,目前EJB容器默认为应用提供了EJB规范中的所有功能,所以它属于重量级
4.框架缺点
需要搭建Spring环境,需要引入包,加重应用