Spring源码 随笔(1)

最近在看spring源码深度解析,打算边看边记录一下:

  spring框架属于一个分层框架,大致分为20个模块;

(1)Core Container

  Core Container(核心容器):包含了beans,Core,Context和Expression Language模块。

  Core跟Beans模块是框架的基础部分,提供IOC(控制反转)跟依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典来消除对程序性单例模式的需要。

    并真正允许你从程序逻辑中分离出依赖关系跟配置。

    • Core模块主要包括Spring框架基本的核心工具类,Spring其他组件都要使用到这个包里面的类。Core模块是其他组件的核心
    • Beans模块是所有应用都要用到,它包含访问配置文件,创建和管理bean以及进行IOC/DI操作的相关的所有类
    • Context模块构建于Core跟Beans模块基础上,提供一种类似于JNDI注册器的框架式的对象访问方式。Context继承了Beans的特性,为Spring核心提供大量的扩展。

      添加了对国际化(资源事件的绑定),事件传播,资源加载和对Context透明事件的支持。Context同时也支持J2EE的一些特性,列如EJB,JMX和基础的远程处理      

      ApplicationCOntext接口是Context模块的关键

    • Expression Language模块提供了一个强大的表达式语言用于在运行时查询和操作对象,它是JSP2.1规范中定义的unifed expression language的一个扩展。
      • 该语言支持设置/获取属性的值,属性的分配,方法的调用,访问数组上下文(accessiong the context of arrays),容器跟索引器,逻辑跟算术运算符,命名变量以及从spring的IOC容器中根据名称检索对象,它也支持list投影,选择跟list聚合

 (2)Data Access/Integration

    Data Access/Integration层包含有JDBC,ORM,OXM,JMS和Transaction模块。其中

    • JDBC模块提供了一个JDBC抽象层,它可以消除冗长的JDBC编码和解析数据库厂商特有的错误代码。这个模块包含了spring对JDBC数据访问的所有类。
    • ORM模块为流行的对象-关系映射API。如JPA,JDO,Hibernate,ibatis等提供了一个交互层。利用ORM封装包,可以混合使用所有spring特供的特性进行O/R映射。如简单的声明性事物管理  

    spring框架包含若干个ORM框架,从而提供了ORM对象关系工具,其中包括了JDO,Hibernate和iBatisSQL Map.所有这些都遵循Spring的通用事物和DAO层异常层次结构。

    • OXM提供了一个对Object/XML 映射实现的抽象层,Object/XML 包含了JAXB,Castor,XMLBeans,JiBX和XStream.
    • JMS(Java Messaging Service)模块主要包含一些制造和消费消息的特性
    • Transaction模块支持编程和声明性事物管理,这些类必须实现特定的接口,并且对所有POJO都是用

  (3) WEB

    Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供上下文,所以Spring框架支持与Jakarta Struts 的集成。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的操作

      Web包含了Web,Web-Servlet,Web-Struts和Web-Porlet模块,具体说明如下

    • Web模块:提供基于面向Web的集成特性。例如:多文件上传,使用servlet listeners 初始化IoC容器以及面向Web的应用上下文。它还包含Spring远程支持中Web的相关部分  
    • Web-Servlet模块web.servlet.jar:该模块包含spring的model-view-controller(MVC)的实现,Spring的MVC框架使模型内的相关代码和web from之间能够清楚的分离开来,并与spring框架的其他特性集成在一起
    • Web-Struts 模块:该模块提供了对Struts的支持,使得类在Spring应用中能与典型的Struts Web层集成在一起。注意在spring 3.0中是deprecated的
    • Web-Porlet 模块:提供了用于Porlet环境与Web-Servlet模块的MVC实现

  (4) AOP

    AOP模块提供了一个符合AOP联盟的标准的面向切面编程的实现,它让你可以定义例如方法拦截器的切点,从而将逻辑代码分开,降低它们的耦合性。利用source-level的元数据功能,还可以将各种行为信息合并到你的代码中

    通过配置的管理特性,Spring AOP 模块直接将面向切面的功能集成到了Spring的框架中,所以可以很容易的使Spring框架管理任何对象支持AOP。Spring AOP 模块基于Spring应用程序中的对象提供了事物管理服务。通过使用Spring AOP,不用依赖EJB组件就可以将声明性事物集成到应用程序中

    • Aspects模块提供了对AspectJ的集成支持
    • Instrumentation模块提供了class instrumentation支持和classloader实现,使得可以在特定的应用服务器上使用

  (5) Test

      Test模块支持使用JUnit跟TestNG对Spring组件进行测试

 END:

    

      

    

posted @ 2018-05-24 17:18  影狼  阅读(195)  评论(0编辑  收藏  举报