`

读书记:Spring框架设计理念<一>

阅读更多

Spring组件概览图



 

 

 

一、Spring的核心组件为什么是Bean?

        Spring组件众多,核心组件莫非有三,Context、Core以及Bean。而三者之中最核心的莫过于Bean。其实,Spring本身框架可以理解为面向Bean的编程(Bean Oriented Programming)。Spring作为目前最优秀的框架之一,它最核心的问题在于解决了一个非常关键的一个问题,它可以把对象之间的依赖关系抽离出来通过配置文件进行管理,也就是Spring最核心的理念 依赖注入--DI(Dependency Injection),而这种关系是通过IOC容器实现统一管理。而IOC容器又是什么呢?它其实就是通过Bean包装的各种对象。Spring实现了把通过Bean包装好的对象进行统一管理和额外操作的目的。Spring根据各个Bean设计它的生存环境,并让它在该环境中根据一定的约束不停的运动,达到与环境或者其它个体进行信息交换,这就是Spring的设计理念。

二、Spring的核心组件是如何协同工作的?

       Bean包装的Object,而为Object中的数据提供生存环境,就是Context所要解决的问题,对于Context来讲,它的作用就是发现各个Bean之间的关系,并为这种关系建立良好的维护。所以我们可以理解Context其实就是各种Bean之间的关系集合,这个关系集合我们可以把它称作IOC容器。而在这个过程中,Core有什么作用呢?我们可以把Core当作Util来理解,Core就是在发现、建立、维护每个Bean之间关系所需要用到的一系列工具。举个例子,如果Bean当作一场演出中的各个演员, 那么Context就好比把各个演员串联起来的剧本,而Core则可以理解为这台演出中的各种道具。

三、Bean组件详解

      Bean位于org.sringframework.beans包下,这个包主要解决了三个问题,Bean的定义、Bean的创建以及Bean的解析。对于使用者来说,我们通常只需要关注Bean的创建,其它两个问题在Spring内部自身解决。

     Bean的创建模式是典型的工厂方法, 顶级接口是BeanFactory,它下面有三个子类,而最终的实现方式则都是由DefaultListableBeanFactory来实现,各个子类都有各自的使用场景,主要作用是区分Spring在内部对象的处理时,对数据所作出的限制和约束。

     Bean的定义由beanDefinition描述,Bean的定义需要在配置文件中定义的<bean/>节点详细描述,当Spring成功解析一个Bean节点时,它会自动转化成BeanDefinition对象,以后所有的操作都是基于BeanDefinition来进行的。

    而Bean的解析则相当复杂,因为为了保证足够的灵活性,被扩展的地方很多,以应对可能的变化。

 

 

四、Context组件详解

    Context位于org.springframework.context包下,主要作用是维护各个Bean之间的关系集,为Spring提供运行环境。ApplicationContext是context的顶级父类,它基于5个接口,这5个接口扩展的context的功能。比如ResourcesPatternResolver 以及ListableBeanFactory。 ResourcesLoader表明, 在Spring运行的过程中,它可以访问到任何外部资源 ,而BeanFactory则印证了Spring运行的主题就是Bean。

     总体来讲,Context主要完成的功能有以下四点:

      1.标识一个应用环境;

      2.利用BeanFactory创建Bean对象;

      3.保存对象之间的各种关系;

      4.能够监听各种事件;

 

五、Core组件详解

       core位于org.springframework.core包下,前面我们讲到core包可以理解为一个Utils类,这里我们以资源的访问方式为例进行说明。

      在Resources接口中封装了各种可能的资源类型。它继承了InputStreaSource接口,在该接口中实现了getInputStream方法, 返回的是InputStream类。因此所有的资源都可以通过InputStream类获取,这样实现了屏蔽资源提供者和资源类型的不同。同时对于资源加载的问题, 是通过ResourcesLoader来实现的,屏蔽了资源加载的差异。对于使用者来说,通过一个接口来屏蔽资源的类型以及加载方式,这种设计理念是值得借鉴的。Context在创建运行环境时,把资源的加载、解析和描述工作交给了ReSourcesPatternResolver来完成。它相当于一个接头人,把资源的加载、解析、和定义整合在一起。交给Context使用。

 

 

 

  • 大小: 9.5 KB
分享到:
评论

相关推荐

    面向对象初学者必须掌握的几种设计模式

    观察者模式 Observer:Swing中的事件模型&lt;br&gt;工厂模式 Factory:在JDK中遍地都是,比如JDBC、JNDI等,是学习Spring的基础&lt;br&gt;命令模式 Command:Struts框架的基石&lt;br&gt;单例模式 Singleton:最简单的设计模式,大量...

    ( maven中整合Spring+hibernate的pom.xml文件的配置.doc )

    - `&lt;spring.version&gt;`:Spring框架的版本号。 - `&lt;log4j.version&gt;`:Log4j的日志库版本号。 #### 依赖管理 Pom.xml中的`&lt;dependencies&gt;`标签用于声明项目所需的依赖库,具体包括: 1. **Hibernate核心依赖**: `...

    maven spring security框架搭建

    根据提供的文件信息,我们可以深入探讨如何使用Maven和Spring Security框架来构建一个安全的应用程序。以下将详细解析各个部分,并介绍这些配置是如何协同工作来确保应用程序的安全性的。 ### Maven依赖 在项目中...

    开源框架 Spring Gossip

    &lt;br&gt;结合 JSTL &lt;br&gt;&lt;spring:bind&gt; 标签 &lt;br&gt;数据绑定的几个方法 &lt;br&gt;&lt;spring:message&gt; 标签 &lt;br&gt;&lt;spring:transform&gt; 标签 &lt;br&gt;其它 View 层 &lt;br&gt;除了 JSP View 层技术之外,您还可以使用其它的 View 层技术,或建立...

    springmvc4+spring4+mybatis3+spring-security3的环境搭建

    Spring MVC是Spring框架的一部分,专门用于构建Web应用程序。它提供了丰富的功能,如请求映射、视图解析、数据绑定、异常处理等。为了设置Spring MVC,我们需要在项目中添加Spring MVC的相关依赖。在`pom.xml`文件中...

    springboot 微服务示例.doc

    - **Spring Boot**:一个基于Spring框架的快速应用开发框架,旨在简化新Spring应用的初始搭建以及开发过程。它提供了开箱即用的配置,使得开发者能够更快地开始编写代码。 - **微服务架构**:一种设计模式,它将...

    Spring4 + Hibernate5详细maven构建.docx

    - **Spring版本**: `&lt;spring.version&gt;4.3.11.RELEASE&lt;/spring.version&gt;` 定义了Spring框架的具体版本,这里是Spring 4.3.11.RELEASE。 - **JUnit版本**: `&lt;junit.version&gt;4.12&lt;/junit.version&gt;` 指定了单元测试框架...

    JSF+Spring+Hibernate 配置

    &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-context&lt;/artifactId&gt; &lt;version&gt;5.3.x&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-web...

    《精通Spring2.X企业应用开发详解》随书源码1-15章

    动态语言支持&lt;br&gt;第5篇 展现层应用&lt;br&gt;第19章 Spring MVC之一&lt;br&gt;第20章 Spring MVC之二&lt;br&gt;第21章 集成其他Web框架&lt;br&gt;第6篇 其他&lt;br&gt;第22章 Spring应用的测试&lt;br&gt;第23章 Spring工具类盘点&lt;br&gt;附录A 各种数据库连接...

    SpringMVC项目搭建

    &lt;artifactId&gt;spring-context-support&lt;/artifactId&gt; &lt;version&gt;${spring.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-test&lt;/artifactId&gt; ...

    《精通Spring2.X企业应用开发详解》20-23

    动态语言支持&lt;br&gt;第5篇 展现层应用&lt;br&gt;第19章 Spring MVC之一&lt;br&gt;第20章 Spring MVC之二&lt;br&gt;第21章 集成其他Web框架&lt;br&gt;第6篇 其他&lt;br&gt;第22章 Spring应用的测试&lt;br&gt;第23章 Spring工具类盘点&lt;br&gt;附录A 各种数据库连接...

    springMVC+mybitis+mongodb+maven整合

    &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt; &lt;version&gt;4.3.23.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;...

    《精通Spring2.X企业应用开发详解》16-19章

    动态语言支持&lt;br&gt;第5篇 展现层应用&lt;br&gt;第19章 Spring MVC之一&lt;br&gt;第20章 Spring MVC之二&lt;br&gt;第21章 集成其他Web框架&lt;br&gt;第6篇 其他&lt;br&gt;第22章 Spring应用的测试&lt;br&gt;第23章 Spring工具类盘点&lt;br&gt;附录A 各种数据库连接...

    SSM框架流程搭建

    &lt;spring-version&gt;4.3.20.RELEASE&lt;/spring-version&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;!-- Spring Core --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-core&lt;/artifactId&gt; ...

    Spring 源代码解析

    Spring源代码解析1:IOC容器;Spring源代码解析2:IoC容器在Web容器中的启动;Spring源代码解析3:Spring JDBC ;...Spring源代码解析9:Spring Acegi框架鉴权的实现&lt;br&gt;Spring源代码解析10:Spring Acegi框架授权的实现

    使用MAVEN搭建SSM框架

    SSM框架是Java Web开发中常用的三大框架集成,包括Spring MVC、Spring和MyBatis。Maven作为项目管理和构建工具,能有效地管理依赖关系,帮助我们便捷地搭建SSM环境。下面将详细介绍如何使用Maven来搭建这个强大的...

    jersey 2.2 +spring 3.1.0.RELEASE+hibernate 3.3.1.GA maven 配置文件

    &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-context&lt;/artifactId&gt; &lt;version&gt;3.1.0.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;...

    SSM三大框架整合详细总结(Spring+SpringMVC+MyBatis).pdf

    &lt;spring.version&gt;4.0.2.RELEASE&lt;/spring.version&gt; &lt;mybatis.version&gt;3.2.6&lt;/mybatis.version&gt; &lt;slf4j.version&gt;1.7.7&lt;/slf4j.version&gt; &lt;log4j.version&gt;1.2.17&lt;/log4j.version&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;!...

    springmvc+spring+mybatis集成框架的环境搭建

    &lt;version&gt;${org.springframework-version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-tx&lt;/artifactId&gt; &lt;version&gt;${org.springframework-version}&lt;/...

Global site tag (gtag.js) - Google Analytics