探究spring源码的 第1天

1.众所周知,Spring是一个分层架构,它包含了我们平常所用到的一系列功能要素,并被分为大致20个模块,下面我们来看一张草图。

Spring5 系统架构 spring架构图_spring

 

**注意哈**: 标色只是为了让各位大佬看着清晰点,并没有实际意义。画的有点丑,望见谅。

**插一段话**: 今天是写博客的第一天,也是探究Spring源码的第一天,望喜欢Java和喜欢探究源码的小伙伴一起加油哈!!!!

相信很多小伙伴看到这张图是不是跟我一样一脸懵逼呢,那下面就给大家解读一下....

## 1. Core Container

  Core Container(核心容器) 包含有Core、Beans、Context和Exepression Language模块。
Core 和 bean 模块是框架的基础部分,提供ioc和依赖注入特性(DI)。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。

    1.1 core模块是Spring的核心工具类,Spring的其他组件都要用到这个包的类,Core模块也是其他组件的基本核心。当然你也可以在自己系统中使用这些工具类。
    
    1.2 Bean模块是所有应用都要用到的,它包含了可访问的配置文件,创建,管理bean以及进行IOC和DI操作相关的类。
    
    1.3 Context模块构建于Core和Bean模块之上,该模块继承了Bean特性,为Spring核心提供了大量扩展,添加了对国际化、事件传播,资源加载和对Context的透明创建的支持。ApplicationContext接口是Context模块的关键。
    
    1.4 Expression Language 模块提供了强大的表达式语言,用于在运行时查询和操纵对象。该语言支持设置/获取属性的值,属性的分配,方法的调用,访问数据上下文、容器和索引器、逻辑和算数运算符,命名变量以及Spring的IOC容器中根据名称检索对象。
    

## 2. Data Access/Integration

   Data Access/Integration 层包含了JDBC、ORM、OXM、JMS、和Transaction模块。
       
    2.1 Jdbc模块提供了一个Jdbc抽象层,它可以消除冗长的jdbc编码和解析数据库厂商特有的错误代码。这个模块包含了Spring对jdbc数据访问进行封装的所有类。
    
    2.2 ORM 模块 为流行的对象-关系映射API 如JPA,JDO,Hibenate,Ibatis等,提供了一个交互层。利用ORM封装包,可以混合使用所有Spring提供的特性进行O/R映射,如前面提到的简单声明性事务管理。
    
    2.3 OXM 模块 提供了一个对Object/XML映射实现的抽象层,o/xml映射(缩写了)实现包括Jaxb,Castor,xmlBeans,Jibx和XStream。
    
    2.4 JMS (Java message Service) 模块主要包含了一些制造和消消息的特性。、
    
    2.5 Transaction 模块支持编程和声明性事务管理,这些事务必须实现特定的接口,并且对所有的POJO都适用。
    

## 3. Web
  
 Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文,所以spring框架支持与Jakarta Struts继承。web模块还简化了处理大部分请求以及将请求参数绑定到域对象的工作。Web层包了web,web-servlet,web-struts,web-porlet模块。
 
 这里主要说下 Web-servlet模块 其他模块一脸懵逼,希望有大佬评论区给予指教。
 
    3.1 Web-servlet模块web.servlet.jar:该模块包含Spring的MVC实现,Spring的mvc框架使得模型范文内的代码和webForms之间能够清楚的分离开来,并与Spring框架的其他特性集成在一起。
  
## 4.AOP

 AOP模块提供了一个符合Aop联盟标准的面向切面编程的实现,他让你可以定义例如方法拦截器和切点,从而将逻辑代码分开,降低他们之间的耦合性。利用source-level 的元数据功能,还可以将各种行为信息合并到你的代码中.
   通过管理配置特性,Springaop模块直接将面向切面编程的功能集成到spring框架中,所以可以很容易地使spring框架管理的任何对象支持aop,aop模块为基于spring地应用程序中地对象提供了事务管理服务。通过使使用SpringAop,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。
   Aspects模块提供了对Aspects地集成支持
  
## 5.Test
 Test模块支持使用junit和TestNG对spring组件进行测试。
 
 
## 6.总结
 
   spring框架大概就分为这些模块,可能看了这些和我一样一脸懵逼(除了一些大佬),这里只是简单了解下spring地整体架构,后面会往源码方向看,相信你们也不喜欢这些干巴巴地文字。
   
   
   制作不易,望各位大佬们点个小赞!!!!!!!!!!

                                                                                                        一位正在实习的Java小白。