首页 > 代码库 > Spring核心技术

Spring核心技术

    这是第二次看关于Spring的资料,因为刚开始学习Spring的时候是边看视频边学习的,所以更注重的是实现代码,但是对宏观的掌握还是不够,这次主要从宏观的角度来分析一下Spring。

什么是Spring

    Spring是分层的Java SE/EE应用一站式的轻量级开源框架,以IoC(Inverse of Control:反转控制)和AOP(AspectOriented Programming:面向切面编程)为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,此外,Spring以海纳百川的胸怀整合了开源世界里众多注明的第三方框架的类库,逐渐成为使用最多的JavaEE企业应用开源框架

 

Spring的好处

    首先,既然要学习和使用Spring,那么,我们就必须要知道使用Spring的好处,如果不能了解他的好处,就不能在适当的时候使用这个框架,当然也就失去了学习的意义。

    方便结构,简化开发

    通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编程所造成的过度程序耦合,有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

    AOP编码的支持

    通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。

    声明式事物的支持

    在Spring中,我们可以从单调烦闷的十五管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

    方便程序的测试

    可以用非容器以来的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。

    方便集成各种优秀框架

    Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate,Hessian,Quartz等)的直接支持。

    降低Java EE API的使用难度

    Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。

    Java源码是经典学习范例

    Spring的源码设计精妙、结构清晰、匠心独运,处处体现着大师对Java设计模式灵活运用以及对Java即使的高深造诣,Spring框架源码无疑是Java技术的最佳实践的范例。如果想在段时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码将会使你受到意想不到的效果。

 

Spring的体系结构

    如果说Spring是一个人,那么AOP和IoC就是他的灵魂(AOP和IoC在之前博客已经讲到),而他的结构体系就是他的骨骼,所以,这里我们要详细的研究一下Spring的结构体系

一张图胜过千言万语


    下面依次讲讲结构体系中每一个模块的内容

核心容器:

    核心容器组成的核心,Beans,上下文和表达式语言模块,每一块的主要功能为:

    spring IOC 用配置 loc BeanFactory Spring

   Context BeanFactory i18n Bean JNDI EJB访

    ApplicationContext Context

    (unified EL) ·使便 Spring IOC

 

数据访问/集成:

    数据访问/集成层包括JDBC,ORMOXMJMS和事务处理模块,每一个模板的功能如下

    JDBC模块提供了不再需要冗长的JDBC编码相关了JDBC的抽象层。

    ORM模块提供的集成层。流行的对象关系映射API,包括JPAJDOHibernateiBatis

    OXM模块提供了一个支持对象/ XML映射实现对JAXBCastor,使用XMLBeansJiBXXStream的抽象层。

    Java消息服务JMS模块包含的功能为生产和消费的信息。

   事务模块支持编程和声明式事务管理实现特殊接口类,并为所有的POJO

   任何应用程序,其核心的问题是对数据的访问和操作。数据有很多表现形式,如数据表、XML、消息等,而每种数据形式又拥有不同的数据访问技术(如数据表的访问既可以直接通过JDBC,也可以通过HirnateiBatis)

    Spring站在DAO的抽象层面,建立了一套面向DAO层统一的异常体系,同时将各种访问数据的检查型异常转换为非检查型异常,为整合各种持久层框架提供基础。其次,Spnng通过模板化技术对各种数据访问技术进行了薄层的封装,将模式化的代码隐藏起来,使数据访问的程序得到大幅简化·这样,Spring就建立起了和数据形式及访问技术无关的统一的DAO层,借助AOP技术,Spg提供了声明式事务的功能。

Web:

    在Web层包括网络,Web-ServletWeb-Struts和网络的Portlet组件,其细节如下:

   Web模块提供了基本的Web开发的集成特性,例如多方文件上传功能和使用的servlet监听器的IoC容器初始化和针对Web的应用程序上下文。

   Web-Servlet模块包含Spring的模型-视图-控制器(MVC)实现Web应用程序。

   Web-Struts模块包含支持类内的Spring应用程序集成了经典的StrutsWeb层。yiibai.com

    Web-Portlet模块提供了MVC实现在portlet环境中使用和镜子WebServlet的模块的功能。yiibai.com

 

    该模块建立在ApplicationContext模块块之上,提供了Web应用的各种工具类,如通过ListenerServlet初始化Spring容器,将Sprmg容器注册到Web容器中。其次,该模块还提供了多项面向web的功能,如透明化文件上传、VelocityFreeMarkerXSLT的支持。

    此外,Spring可以整合StrutsWebWorkTapestryWebMVC框架。

 

其他:

    还有像AOP,切面,规范,网络和测试模块,其详细情况如下其他一些重要的模块:

    AOP模块提供了面向方面编程实现,允许您定义方法拦截器和切入点,以干净解耦,实现的功能,应该分开的代码。

    Aspects模块提供与AspectJ的集成这又是一个功能强大且成熟的面向方面编程(AOP)框架。

    Instrumentation模块提供了一定的应用服务器中使用类工具的支持和类加载器实现。

    测试模块支持Spring组件使用JUnitTestNG框架的测试。


此外,Spring在远程访问以及WebService上提供了对很多著名框架的整合。由于Spring框架的扩展性,特别是随着spring框架影响性的扩大,越来越多框架主动地支持Spring框架,让spring框架应用涵盖面越来越宽广。


本博客主要借鉴了《Spring3.X企业开发应用实战》,一本非常系统的讲解Spring的书籍,推荐大家看一下