SSM源码剖析读书笔记--第二章

本书是 互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析Core Container模块该模块(也叫Spring核心容器模块)是Spring的根基,由Beans、 Core、Context、SpEL四个子模块组成,这四个子模块如下所述。◎ Beans模块和Core模块提供框架的基础部分,包含IoC(Inversion of Control,控制反转)和 DI(Dependency Injection,依赖注入)功 能,使用 BeanFactory 基本.
摘要由CSDN通过智能技术生成

本书是  互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析

Core Container模块

该模块(也叫Spring核心容器模块)是Spring的根基,由Beans、 Core、Context、SpEL四个子模块组成,这四个子模块如下所述。

◎ Beans模块和Core模块提供框架的基础部分,包含IoC(Inversion of Control,控制反转)和 DI(Dependency Injection,依赖注入)功 能,使用 BeanFactory 基本概念来实现容器对Bean的管理,是所有 Spring应用的核心。Spring本身的运行都是由这种Bean的核心模型进行 加载和执行的,是Spring其他模块的核心支撑,是运行的根本保证。

 

◎ Context(包含 Spring-Context和 Spring-Context-Support两个子模 块)模块建立在Core模块和 Beans模块的坚实基础之上,并且集成了 Beans模块的特征,增加了对国际化的支持,也支持Java EE特征。 ApplicationContext接口是Context模块的焦点。Spring-Context-Support模 块支持集成第三方常用库到Spring应用上下文中,例如缓存 (EhCache、Guava)、调度Scheduling框架(CommonJ、Quartz)及模 板引擎(FreeMarker、Velocity)。

 

◎ SpEL模块(Spring-Expression Language)提供了强大的表达式语 言来查询和操作运行时的对象。

 

Spring的领域模型有三种,如下所述。

(1)容器领域模型(Context模型):也叫作上下文模型,是 Spring的掌控域,对 Spring核心领域模型进行生命周期管理。也可以将 其称为Spring的服务域,因为它为整个应用服务。

(2)核心领域模型(Bean模型):体现了 Spring的一个核心理 念,即“一切皆 Bean,Bean即一切”。Bean是应用运行时可执行的最小函 数式单元,可以是一个属性单元,也可以是 Java 中的一个函数对象, 更倾向于一种对象式的为某种特殊行为而生的可复用的概念,不受职责 或者大小的限制。例如 Spring 上下文是一个 Bean,一个简单的描述型 的对象也是一个Bean。Bean模型是Spring的核心服务实体域,是应用要 操作的本身,是每个线程的真正执行者,也是整个会话生命周期的管理 者,还是Spring对外暴露的核心实体。

(3)代理领域模型(Advisor模型):Spring代理的执行依赖于Bean 模型,但是Spring代理的生成、执行及选择都依赖于 Spring自身定义的 Advisor模型,只有符合 Advisor模型的定义,才能生成Spring代理。

 

Context模块即Spring上下文模块(也叫Spring Context模块),是 Core Container模块的子模块,它让 Spring 真正成为一个可执行框架。 这个模块扩展实现了 BeanFactory,让它不仅仅是 BeanFactory。笔者认 为,Context 模块虽然是 BeanFactory 的实现者,但更是一个框架,这才 是它的主要职责。

 

 

 

Spring上下文的设计

核心抽象类的职责。

(1)ApplicationContext 是整个容器的基本功能定义类,继承了 BeanFactory,这说明容器也是工厂的多态实现。其实它利用了代理的设 计方法,内部持有一个 BeanFactory 实例,这个实例替它执行 BeanFactory 接口定义的功能,这种典型的代理模式应用也是非常巧妙 的。

(4)AbstractRefreshableApplicationContext是 XmlWebApplicationContext的核心父类,如果当前上下文持有 BeanFactory,则关闭当前BeanFactory,然后为上下文生命周期的下一 个阶段初始化一个新的BeanFactory,并且在创建新容器时仍然保持对其 父容器的引用。

 

Spring容器BeanFactory的设计

 

Spring 的核心功能就是实现对 Bean 的管理,比如 Bean 的注册、注 入、依赖等。而Spring容器提供了依赖注入这个特征,以实现 Spring 容 器对 Bean的管理,而且使用 IoC实现了对Bean的配置与实际应用代码的 隔离。其中,Core Container模块的核心概念就是BeanFactory,它是所 有Spring应用的核心。因为Spring的核心模型就是Bean模型,所以需要 在管理Spring Bean的基础上保证Spring应用的运行。

 

BeanFactory接口是Bean容器设计中基本的职责定义接口,定义了按 照名称、参数、类型等几个维度获取、判断Bean实例的职能。

 

 

 

 

 

Spring父子上下文与容器

 

虽然在 ApplicationContext 接口中也声明了 BeanFactory 接口中的功 能,但其实 Application Context 和 BeanFactory 并不是一个概念,只是 由于在 AplicationContext 实例中持有了BeanFactory实例,也就是说 BeanFactory实例只是AplicationContext的一个属性,由这个属性来帮助 ApplicationContext对外提供BeanFactory定义的功能实现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
互联网轻量级 ssm 框架解密 springspringmvcmybatis码深度剖析SSM 是Spring、Spring MVC 和MyBatis 框架的组合,是目前Java 领域使用非常广泛也非常稳定的开Web 框架。《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis码深度剖析》以SSM 的核心代码剖析为基础,突破Java Web 研发瓶颈的束缚,选取Spring、SpringMVC 和MyBatis 框架中易于理解的版本,深入剖析了其中各个模块的实现,从代码中挖掘常用的设计模式,为读者理解Spring 系列框架的可扩展设计艺术提供了方法论和优秀实践。 《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis码深度剖析》Spring 剖析篇基于Spring 4.3.2 版本, 剖析了Spring 上下文、Spring AOP 和Spring 事务的实现,并通过实例展示了框架陷阱的隐蔽性及学习框架原理的必要性。Spring MVC 剖析篇基于SpringMVC 3.0 版本,这个版本比较简单、核心清晰,便于读者理解透彻,这里主要讲解其中的设计模式及可插拔的设计思路。MyBatis 剖析篇基于MyBatis 3.4 版本,帮助读者对SQL 语言、JDBC 及数据访问方式有更深入的了解,也能看到工厂、Builder、代理、装饰者等设计模式在MyBatis 中的大量应用。 《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis码深度剖析》对于互联网从业者,或者传统行业的IT 工程师、架构师、技术经理、技术总监,以及想深耕IT行业的技术人员都有很强的借鉴性和实用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值