第一次总是很生涩-小白开始学Spring-整体框架把握

本文旨在从源码层面深入学习Spring框架,目前处于初级阶段,将逐步剖析Spring的核心组件,包括核心容器、IoC/DI、上下文模块等。Spring是一个分层架构,涵盖20多个模块,如Core、Beans、Context等,提供了强大的表达式语言、数据访问/集成支持,并支持Web、AOP和事务管理等功能。
摘要由CSDN通过智能技术生成

现在对于Spring框架只停留在会用但不知其为啥这么用的阶段,为了知其所以然,准备每天扣一点源码来理解。不积跬步无以至千里,我一天扣一点,总有一天会扣完的。因为这个系列是记录自己第一次细看源码地学习Spring框架,难免会表现生涩。所以文中可能有话语表达有误,有我自己的主观表达,各位发现有问题的地方,还请指出。
spring的学习参考了https://www.javadoop.com/,还有b站上的资源。

Spring整体架构

1.1 Spring整体架构

​ Spring是一个分层架构,被分为了大约20个模块。

  • core container(核心容器)

    • Core

      包含了Spring框架的基本的核心工具类,例如各种转换器(不止是其他模块可用,我们自己也可以使用这些类),这些内容也是其他模块所依赖的。

    • Beans

      该模块是所有应用都要用到的,包含了访问配置文件、创建和管理bean以及进行ioc/di操作相关的所有类。

    • Context

      该模块是构建于core和beans模块之上的。提供了一种类似1的框架式的对象访问方法。Context模块继承了Beans的特性,有资源绑定、事件传播、资源加载、和对Context的透明创建的支持。Context也支持J2EE的一些特性,如EJB、JMX和基础的远程处理。ApplicationContext是Context模块的关键。

    • Expression Language

      提供了一个强大的表达式语言用于在运行时查询和操纵对象。该语言支持设置/获取属性的值,属性的分配,方法的调用,访问数组上下文、容器和索引器,逻辑和算术运算符,命名变量以及从Spring的IoC容器红根据名称检索对象。

  • Data Access/Integration(数据访问/集成)

    • JDBC 提供了一个JDBC抽象层,可以消除冗长的JDBC编码和解析数据库厂商特有的错误代码。该模块包含Spring对JDBC数据访问进行封装的所有类。
    • ORM 为对象-关系映射API,例如JPA、Hibernate、Mybatis等,提供了交互层,利用ORM封装包,可以使用所有Spring提供的特性进行O/R映射。
    • OXM 提供了一个object/XML映射实现的抽象层,包括JAXB、Castor、XMLBeans、JiBX和XStream。
    • JMS 主要包含了一些制造和消费消息的特性。
    • Transaction 支持编程和声明性的事务管理,这些事务类必须实现特定的接口,并且对所有的POJO都适用。
  • Web

    • Web
    • Web-servlet
    • Web-Struts
    • Web-Porlet
  • AOP

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

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

img
下一步,我们将通过配置文件方式获取bean


  1. JNDI 是Java命名与目录接口,是EJB的特性之一,在J2EE中是重要的规范之一。JNDI功能类似把资源或者对象放到目录里面,然后通过资源名或者对象属性我们可以在这个‘目录’中找到相应的资源。例如:没有JNDI之前,传统的jdbc链接数据库我们会在代码中写入driver、url、username、password等属性,这样不利于我们后期对于这些属性值的维护。通过JNDI我们可以用xml文件配置上面的各种属性值,然后通过读取xml文件,获取到这些配置。(首先,在在J2EE容器中配置JNDI参数,定义一个数据源,也就是JDBC引用参数,给这个数据源设置一个名称;然后,在程序中,通过数据源名称引用数据源从而访问后台数据库。) ↩︎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值