Spring 源码深度解析笔记

####1. 核心容器

  • Core 模块:主要包括Spring 框架基本的核心工具类,其他模块都要基于该模块。
  • Beans 模块:包含访问配置文件、创建和管理bean以及进行IoC/DI操作相关的类。
  • Context 模块:构建于Core 和Beans 模块之上,提供了一种类似JNDI注册器的框架式的对象访问方法。Context 模块继承了Beans 模块的特性,为Spring 核心提供了大量扩展,添加了对 国际化、事件传播、资源加载和对Context 的透明创建的支持。同时也支持J2EE的一些特性,比如EJB、JMX和基础的远程处理。ApplicationContext接口是Context模块的关键。
  • Expression Language 模块:提供了一个强大的表达式语言用于在运行时查询和操纵对象。该语言支持设置/获取属性的值,属性的分配,方法的调用,访问数组上下文、容器和索引器、逻辑和算术运算符、命名变量以及从Spring 的IOC容器中根据名称检索对象。也支持list投影、选择和一般的list聚合。

2. 数据访问与集成

  • JDBC模块:提供了一个JDBC抽象层,它可以消除冗长的JDBC编码和解析数据库厂商特有的错误代码。这个模块包含了Spring对JDBC数据访问进行封装的所有类。
  • ORM模块:对象-关系映射API,如JPA、JDO、Hibernate、MyBatis等。
  • OXM模块:Object/XML映射抽象层,具体实现包括JAXB、Castor、XStream等。
  • JMS模块:消息模块。
  • Transaction模块:支持编程和声明性的事务管理。

3. Web

  • Web模块:提供了基础的面向Web的集成特性。例如,多文件上传,使用servlet listeners初始化IoC容器以及一个面向Web的应用上下文。
  • Web-Servlet模块:包含Spring的MVC实现。
  • Web-Struts模块:提供了对Struts的支持。
  • Web-Porlet模块:提供了用于Porlet环境和Web-Servlet模块的MVC的实现。

4. AOP

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

5. Test

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

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Python之time模块的时间戳、时间字符串格式化与转换

Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y

Spring 源码深度解析笔记 - HelloWorld