一、Spring是什么 Spring Framework(简称Spring)是J2EE应用程序框架,不过,更严格地讲它是针对Bean的生命周期进行管理的轻量级容器(Lightweight container),可以单独利用Spring构筑应用程序,也可以和Struts,Webwork等众多Web应用程序框架组合使用,并且可以与Swing等桌面应用程序API组合。所以Spring并不仅仅只能应用在J2EE中,也可以应用在桌面应用及小应用程序中。针对Spring开发的组件不需要任何外部库。 Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发 什么是轻量级? 从大小及系统开支上说。且spring是非侵入式的(基于spring开发的系统中对象一般不依赖与spring的类)【struts1是侵入式的,struts2可以说是非侵入式的】 什么是Ioc控制反转? 控制反转是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了容器,控制权的转移就是所谓反转 什么是面向切面? 将业务逻辑从系统服务中分离,实现内聚开发。系统对象只做其该做的业务逻辑不负责其他系统问题(如日志和事务支持) 什么是容器? 包含且管理系统对象的声明周期和配置,通过配置设定Bean是单一实例还是每次请求产生一个实例,并设定Bean之间的关联关系 什么是框架? 使用简单组件配置组合成一个复杂的系统,系统中的对象是通过XML文件配置组合起来的,且spring提供了很多基础功能(事务管理、持久层集成等) 什么是依赖注入? 所谓依赖注入就是指:在运行期,由外部容器动态地依赖对象注入到组件中 二、使用spring有什么好处? (1)Spring能有效地组织你的中间层对象。 (2)Spring能消除在许多工程中常见的对Singleton的过多使用。 (3)Spring能消除各种各样自定义格式的属性文件的需要,使配置信息一元化。 (4)Spring能够帮助我们真正意义上实现针对接口编程。 (5)在Spring应用中的大多数业务对象没有依赖于Spring。 (6)使用Spring构建的应用程序易于单元测试。 (7)Spring支持JDBC和O/R Mapping产品(Hibernate) (8)MVC Web框架,提供一种清晰,无侵略性的MVC实现方式。 (9)JNDI抽象层,便于改变实现细节,可以方便地在远程服务和本地服务间切换。 (10)简化访问数据库时的例外处理。 (11)Spring能使用AOP提供声明性事务管理。 (12)提供了JavaMail或其他邮件系统的支持 三、spring框架的7个模块 1、核心容器:提供了基础功能。包含BeanFactory类(spring框架的核心,采用工厂模式实现) 2、应用上下文模块:扩展了BeanFactory,添加了对I18(国际化)、系统声明周期事件及验证的支持,并提供许多企业级服务,如电子邮件服务、JNDI访问、EJB集成、远程调用及定时服务,并支持与模块框架(如Velocity和FreeMarker)的集成 3、AOP模块:对面向切面提供了丰富的支持,是spring应用系统开发切面的基础:并引进了metadata编程 4、JDBC和DAO模块 5、O/R映射模块 6、web模块:建立在应用上下文模块的基础上,提供了适合web系统得上下文,另外,该模块支持多项面向web的任务,如透明处理文件上传请求,自动将请求参数绑定到业务对象中等 7、MVC框架:所有模块都是建立在核心容器之上的,容器规定如何创建、配置和管理Bean,以及其它细节