1.Spring 框架由6个模块组成

  • 上图是spring4的结构图,不同版本结构略有差异,但模块都是相同的。

2.Core Container 核心容器

  • 容器是Spring的核心部分,Core Container 模块是Spring框架的基础,所有模块都构建于核心模块之上。
  1. Beans : Beans模块是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Depen-dency Injection(IoC/DI)操作相关的所有类。
  2. Core  : Core模块主要包含Spring框架基本的核心工具类,Spring的其他组件要都要使用到这个包里的类,Core模块是其他组件的基本核心。当然你也可以在自己的应用系统中使用这些工具类。
  3. Context  :  Spring的上下文即IoC容器,通过上下文可以获得容器中的Bean。 ApplicationContext接口是Context模块的关键。  Context模块构建于Core和Beans模块基础之上,提供了一种类似于JNDI注册器的框架式的对象访问方法。
  4. SpEl  :  Expression Language模块提供了一个强大的表达式语言用于在运行时查询和操纵对象。

3.Core Container 依赖关系

  • 核心模块中的部分并不是独立的,他们之间相互依赖着

  1. 因为spring-core依赖了commons-logging,而其他模块都依赖了spring-core,所以整个spring框架都依赖了commons-logging。
  2. 如依赖关系Spring离不开日志,但是日志框架有多种也不一定使用commons-logging如果有自己的日志实现如log4j,可以排除对commons-logging的依赖,没有日志实现而排除了commons-logging依赖,编译报错。关于Spring日志框架请看这篇博文

4. 构建最基础的Spring项目

  1. 核心容器四个包
    1. spring-beans-4.1.3.RELEASE.jar
    2. spring-context-4.1.3.RELEASE.jar
    3. spring-core-4.1.3.RELEASE.jar
    4. spring-expression-4.1.3.RELEASE.jar
  2. 核心容器依赖的日志包
    1. commons-logging-1.2.jar
    2. log4j-1.2.17.jar
    • commons-logging相当于一个日志接口,log4j相当于该接口的实现,如果不添加log4j包也可以,因为commons-logging也有一个简单的实现会自动使用。
  3. 测试类包
    1. spring-test-4.1.3.RELEASE.jar
    2. junit-4.10.jar(高于4.10版本还需要hamcrest-core.jar + hamcrest-library.jar)
  4. 测试类用到了AOP必须导入aop包
    1. spring-aop-4.1.3.RELEASE.jar

  这样一个Spring项目所需要的最基础的环境就搭建完成了。

最新文章

  1. js,格式化long类型日期封装
  2. 《TCP/IP详解 卷一》读书笔记-----DNS
  3. AOJ 739 First Blood
  4. 输入和输出的总结(c语言)
  5. luigi学习6--parameters详解
  6. desin pattern
  7. #ifndef#define#endif的用法
  8. Front-End Engineer 技术栈
  9. linux 下 apt命令集详解
  10. It's only too late if you decide it is. Get busy living, or get busy dying(转)
  11. javascript焦点图(能够自己主动切换 )
  12. 52. N-Queens II N皇后II
  13. 初识“FireBug”
  14. Linux内存、性能诊断中vmstat命令的详解
  15. Go语言 数据类型,流程控制
  16. pygame经典sprite精灵类
  17. ASP.NET 页面访问控制
  18. thinkphp 使每一个模板页都包括一个header文件和一个footer文件
  19. notepad++正则表达式删除所有行某字符开始之前或者之后所有字符
  20. python排序算法的整理

热门文章

  1. 阿里云ECS环境部署 centos 6.5
  2. 【arc075F】Mirrored
  3. Lipshitz
  4. python基础----__slots__方法、__call__方法
  5. Git 自动补全
  6. 流媒体协议之JRTPLIB的使用20170919
  7. bzoj 1513 POI2006 Tet-Tetris 3D 二维线段树+标记永久化
  8. apk签名验证机制
  9. [LeetCode] 26. Remove Duplicates from Sorted Array ☆
  10. FTP、SFTP文件下载内容校验