Spring源码学习笔记(一)

Spring整体架构:

spring是一个分层架构,分为以下模块:
这里写图片描述

  1. Core Container
    Core 模块 主要是spring框架使用的基础工具类。spring-core.jar
    Beans模块 主要包括读取配置、Factory、IOC、DI等相关类。spring-beans.jar
    Context模块 框架的访问入口。spring-context.jar
    Expression Language模块 统一表达式语言(unified EL)的扩展模块。spring-expression.jar

  2. Aop-设备支持模块
    AOP模块: spring另一主要核心模块,利用JVM的 动态代理为基础,以PointCut为切入点,扩展业务需求。
    aspects(一个面向切面的框架),主要提供各种面向切面的AOP方法。
    instrumentation AOP模块的一个支援模块,用于JVM启动时生成代理,修改类的字节,从而改变一个类的逻辑,实现AOP功能。

  3. DataAccess/Integration
    spring-jdbc模块:spring对JDBC框架的实现,主要提供JDBC模版方式,关系数据对象化方式,simplejdbc方式,事务管理,从而简化JDBC编程(JdbcTemplate、SimpleJdbcTemplate、NamedParameterJdbcTemplate)
    spring-tx模块:spring jdbc 事务控制模块。(AOP)
    spring-orm模块:主要集成Hibernate、JPA、JDO用户资源管理、数据访问对象的实现和事务策略。
    spring-jms模块:能够发送和接受消息。
    spring-oxm模块:Java对象与XML数据相互映射。

  4. web模块
    spring-web模块:最基础的web支持。
    spring-mvc模块:web-servlet模块。
    spring-websocket模块:消息推送
    spring-webmvc-portlets模块:为SPRING-MVC提供Portlets组件支持。(可插拔用户接口组件)
    spring-messaging模块:集成的一些报文传送应用。
  5. Test模块
    test模块:为测试提供支持。spring模块依赖关系
    (学习路线:core-ioc-aop-context-web 对应源码包:spring-core、spring-beans、spring-aop、spring-context、spring-web)

SPRING-CORE

SPRING-BEANS

Spring-beans接口关系图

(学习之前了解一下 JAVA的工厂模式以及代理模式,了解一下ThreadLocal,Cglib的用法)
1. XmlBeanFactory
1.1创建IOC配置文件的抽象资源(Resource),这个抽象资源包括BeanDefination的定义信息
1.2 创建BeanFactory(DefaultListablebBeanFactory等实现类)
1.3资源读取器,对XML、文件、URL等资源进行读取,这里的配置文件对应 BeanDefinition实例(BeanDefinitionHolder、AbstractorBeanDefinitio),并回传给BeanFactory.
1.4完成对Bean的载入和注册,最后生成一个 IOC容器(HASHMAP)
2.ApplicationContext
ApplicationContext是高级的容器,用于加载Bean配置,抽象成BeanDefinition实例,当有请求时生成Bean实例。另外ApplicationContext还实现一些扩展接口 MessageSource(支持不同信息源)、ResourcePatternResolver(对不同的Resource支持)、ApplicationEventPublisher(为应用引入了事件机制更好管理Bean周期)、Envitonment(丰富IOC功能)、ListableBeanFactory和HierachicalBeanFactory(容器)。
(学习小结:此前学习spring源码初衷是更多的了解其中的原理,但实际看到源码,发现里面的代码设计结构,以及接口、静态类的使用,更好的实现了对java的特性的诠释,用之前参考资料的一句话 叫做 代码之美)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值