前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈对Spring Framework的认识

浅谈对Spring Framework的认识

作者头像
欠扁的小篮子
发布2018-04-11 11:22:57
8060
发布2018-04-11 11:22:57
举报

       Spring Framework,作为一个应用框架,官方的介绍如下:

       The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. A key element of Spring is infrastructural support at the application level: Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments.

       在开发中,Spring框架从程序员手中接管了对象的创建,Spring根据配置文件或者扫描注解,得到类、组件之间的关系,并创建对象进行注入,这个过程不需要程序员手动创建并赋值,从而降低了耦合性,开发的时候也不需要理会这些与功能代码实现无关的部分,这就是DI/IOC(依赖注入/控制反转)。基于DI/IOC,Spring框架的不同模块提供了各种功能,为应用提供了AOP功能、持久层的支持,为Web层提供了SpringMVC以及与其他框架的整合使用等等。(这特么不是上面的翻译啊啊啊)

       这段时间正在学习Spring源码,浅谈一下我对Spring的认识。参考资料主要为Spring官方文档、《深入分析Java Web技术内幕》《Spring源码深度解析》,部分内容借鉴书中原文。

       Spring中的主要组件如图:

        Spring中的核心容器中有四个部分,核心组件是其中的Beans、Core和Context组件,至于SpEL不太了解o(* ̄▽ ̄*)o 。如果没有Core Container核心容器的支持,就不会有上层的AOP、Web等特性功能。

        三个组件中,Beans组件可以说是比较核心的,Spring框架将对象之间的依赖关系转用配置文件、注解来配置,注入关系通过IOC容器来管理,而IOC容器中管理的实体就是被Bean包裹的对象。Bean就是被包装之后的Java对象,由Spring框架创建和维护。

       Context组件是Bean的上下文,是Bean的生存环境,用于建立和维护Bean之间的关系,所以说Context其实是Bean关系的集合,这个关系的集合就叫做IOC容器。

       而Core组件,就是发现、建立、维护Bean之间的关系所需要的一系列的工具类(Util)。

一、Beans组件

       Beans组件主要解决了Bean的定义、创建和解析,实现在org.springframework.beans包中。

       Bean的创建是典型的工厂模式,顶级接口是BeanFactory,简单的继承层次如下:

       BeanFactory有三个子类接口,ListableBeanFactory(可列表的)、HierarchicalBeanFactory(可继承的)、AutowireCapableBeanFactory(可自动装备的),三者分别有不同的使用场合,而BeanFactory的默认实现类是DefaultListableBeanFactory,它实现了所有的接口。

        Bean的定义主要由BeanDefinition描述。当Spring对配置文件中的Bean进行成功解析或者对注解的Bean解析完成后,其在Spring内部转换成BeanDefinition对象,此后所有的操作都是对这个对象进行的。UML图如下:

          Bean的解析比较复杂,主要有对配置文件的解析和对注解的解析,配置文件解析过程主要由以下类完成:

二、Context组件

         Context组件提供Spring的一个运行时环境,在org.springframework.context包实现。ApplicationContext是Context的顶级接口,它继承了六个接口,主要是扩展了Context:

        可以看出,ApplicationContext继承了BeanFactory,使得其有创建Bean的功能,这也间接说明了Spring容器中运行的实体是Bean。ApplicationContext继承了ResourceLoader接口,意味着ApplicationContext可以访问外部资源。

       ApplicationContext两个子类接口分别是ConfigurableApplicationContext和WebApplicationContext,根据字面意思便可理解其用途。

 一般来说,ApplicationContext有一下几个作用:

       1.标识一个应用环境

       2.利用BeanFactory创建Bean对象

       3.保存对象关系表

       4.能捕获各种事件

Context作为Spring的IOC容器,整合了Spring的大部分功能的基础。

三、Core组件

      Core组件提供了很多比较重要的关键类,比如资源的访问。这里暂时不想写了,留坑以后填。

写累了,下篇再接着写IOC容器的工作过程吧,BeanFactory的创建过程、Bean及其关系网的创建、IOC容器的扩展点等等。洗洗睡了_(:зゝ∠)_

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-09-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档