文档介绍:,具有IoC和AOP特性。Spring是一个应用框架(相对于JavaEE标准),Struts、JSF和Tapestry是Web层框架,Hibernate是持久层框架,而Spring关注应用的所有层。Spring在每一层都提供了相应的支持,例如在Web层提供了SpringMVC框架,在dao层提供了SpringJdbcTemplate,另外Spring也可以通过引入其它的框架把其他框架嵌入到Spring中,例如可以通过ORM层嵌入Hibernate、Toplink等ORM框架,在Web层可以嵌入Struts和JSF等Web层框架。Spring作为容器,对运行在其中的组件进行管理,包括组件的创建、删除以及组件之间关系的设置。根据需要可以只生成一个实例,也可以每次请求生成单独的实例。Spring是轻量级的,从大小和开销两方面来说,Spring都是轻量级的,完整的Spring框架可以在大小只有1M多的jar文件中发布。并且Spring所需要的处理开销也是微不足道的。此外,Spring是非侵入式的,在开发过程中不依赖于特定的Spring类。Spring采用了控制反转(InverseofControll,IoC),或者称为依赖注入(DependencyInjection,DI)的技术。采用IoC之后,一个对象依赖的其他对象不需要自己创建,可以由IoC容器创建,然后容器把这个对象赋给它。Spring提供了对面向切面编程(AspectOrientedProgramming,AoP)的支持,允许通过分离应用的业务逻辑和系统级服务进行内聚性的开发。应用程序只实现他们应该做的,完成核心业务逻辑,他们并不负责其他的系统级服务关注点,例如日志、安全和事务处理。下面分别介绍Spring的两个关键特性IoC和AOP。Spring框架提供的功能一个IoC容器,用于关于业务类;一个AoP框架,Spring提供了一个基于代理的AOP框架,并且可以和其他的AOP框架集成,例如AspectJorAspectWerkz;一个服务抽象层,能够采用相同的方式与标准的API以及第三方的API集成。服务抽象层:提供了对如下服务的抽象提取:事务管理:JTA、数据库事务以及其他的事务数据访问:JDBC、Hibernate、JDO、iBatis、TopLinkEmail路由(Remoting):EJB,WebServices,RMI,Hessian/BurlapSpring的Web层可以很好的与Struts、WebWork、JSF、Tapestry、Velocity以及其他Web框架进行集成,除了可以与这些框架进行集成之外,还提供了自己的Web层框架SpringWebMVC。Spring与JavaEE应用服务器Spring不是JavaEE应用服务器。它可以很好的与Java应用服务器进行集成,很多情况下,他和可以替换原本需要应用服务器提供的功能。使用方便,你的代码不能依赖Spring,充分利用和集成现有优秀的框架。Spring是非侵入的,用户在编写代码的时候不用引入或者继承任何Spring的API。不像在Struts1中所有的Action需要继承Action,FormBean需要继承ActionForm。EJB2中的Bean类需要实现接口,home接口和业务接口都需要继承特定的接口。(Aspect-OrientedProgramming),面向切面的编程,或者面向方面的编程,与OOP相对,OOP关注的对象,关注的是继承关系,是一种层次关系,而AOP关注的是应用的横切面,与应用的核心业务无关,但是在执行这些核心业务的时候都会用到。例如日志功能。AOP关注的不再是对象,而是应用的某些关注点,例如日志、事务、安全,Spring提供了这些服务。AOP的基本概念:方面(Aspect):切入多个类的关注的模块化表示,通常是一个类,封装了在发生所关注的事件之后需要执行的操作。日志和事务管理就是很好的例子,在很多类中都需要进行日志和事务处理,日志和事务处理就可以使用单独的类来实现,就是方面。在Spring中可以使用普通类或者使用***@Aspect注释进行标注的普通类。Struts2中编写拦截器来实现AOP的方面。连接点(Joinpoint):程序执行过程中的一个点,可能是方法的执行,可能是异常的处理,例如添加用户、删除用户等。在SpringAOP中,连接点通常表示一个方法的执行。通知(Advice):在特定的连接点方面要执行的动作。通知包括环绕通知(around)、事前通知(before)和事后通知(after)以及异常通知(throws)。许多AOP框架包括Spring都是把通知设计成拦截器,为每