spring源码分析之一:宏观下spring

宏观下的spring

spring框架大而美,完全消化实在不易,需要慢慢消化。我想从外到内的,说说我对spring的理解。

容器

spring的本质其实就是一个大容器, 容器的功能是存放管理. spring容器存放管理的是Java类。将Bean集中管理。统一调配,提高协同效率。我觉得用一个词来形容就是“中心化”

体系

spring 结构是模块化。类似一个仓储,一个仓储不能只是一个仓库在那里,他需要好几个部门的相互配合,才能体现一个仓储的社会能力.模块就类似其部门.模块化的好处就是,分工明确,协同工作.我们可以在模块的划分上,大体理解spring的整个架构运行体系。

在这里插入图片描述

  1. 核心模块。

核心模块是整个spring机器运行的基本部分。没有这几个部分,spring就玩不转。
spring-core 模块: 可以理解为工具模块。 工具模块的基本工作就是提供基本工具,所以被其他模块引用。

spring-beans模块: 核心中核心。从包名,我们可以看出,这个包下是基本都是针对bean开展的工作。其中有一个重要的组件BeanFactory。这个是存储bean的容器,是核心。

spring-context模块:模块建立在core和beans模块的基础上,增加了对国际化的支持、事件广播、资源加载和创建上下文,ApplicationContext是context模块的重点。context模块的重点是扩展bean容器功能。使bean容器看起来更有灵活,但是最核心的功能,还是在beans包中。

spring-context-support提供对常见第三个库的支持,集成到spring上下文中,比如缓存(ehcache,guava)、通信(javamail)、调度(commonj,quartz)、模板引擎等(freemarker,velocity)。

  • 扩展模块

扩展模块的核心工作是什么? 答:扩展spring功能,让spring不只是一个存储容器。

AOP能力: AOP作为一种面向切面的编程思想.在spring中实现了

  • spring-aop: 以JVM动态代理技术为基础实现AOP能力
  • spring-aspects: 为spring aop提供多种实现.

数据访问能力: 使spring具有访问数据的能力. 自己也提供了一套JDBC访问模板来方便数据库访问,还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,

  • spring-jdbc:Spring 提供的 JDBC 抽象框架, 简化数据访问.
  • spring-orm: 具有与第三方数据访问框架对接的能力.
  • spring-jms: 能够发送和接受信息
  • spring-tx: 事务控制实现模块
  • spring-messaging:为Spring框架集成一些基础的报文发送应用

web能力: 使spring具有web能力.自己也提供了一套Spring MVC框架,来方便web层搭建,还提供与第三方Web(如Struts1/2、JSF)框架无缝集成.

  • spring-web: Spring 提供了最基础 Web 支持, 主要建立于核心容器之上
  • spring-webmvc: 我们熟知的springmvc
  • spring-websocket:主要是与Web前端的全双工通讯协议
  • spring-webflux:新的非阻塞式Reactive Web框架,可以用来建立异步、非阻塞、事件驱动的服务.
IOC与DI

对于IOC(控制反转)与DI(依赖注入).我认为首先不要去神话她.,她并没有那么显的高大上.

  • IOC:控制反转的解决的是 将Bean类从原来的分散创建.转为集中创建.统一由管理员创建.我们从new 命令解放出来,只做Bean的定义. 控制权就到了管理员手里.这里的管理员也就是我们常说的容器
  • DI: 依赖注入其实和IOC是一个因果关系. 正是由于中心化.Bean统一管理.我们只需要告诉管理员:我们需要在哪里需要使用Bean. 管理员就帮我把对应的Bean 放到哪里.

总结起立来: spring就是一个名词: 中心化. 在适合中心化的场景下,中心化能够集中资源.统一调配,提高效率.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值