`

Spring知识整理(四)—— ApplicationContext上

阅读更多

ApplicationContext是对BeanFactory的一个扩展,观察ApplicationContext接口我们可以发现,这个接口除了继承了ListableBeanFactoryHierarchicalBeanFactoryBeanFactory的子接口)外,还继承了ApplicationEventPublisherMessageSource接口,这两个接口就为ApplicationContext提供了容器内事件发布国际化的信息支持等新功能。

 

关于BeanFactory还有很多要说的东东,包括XML中的元素,注解注入,生命周期等等,这些东西会在Spring实战篇和以后逐渐说明。

  

BeanFactory中我们用到了Resource类去加载资源文件,Resource有以下五个实现类:

ByteArrayResource

ClassPathResource

FileSystemResource

UrlResource

通过名字就能看出它们的作用,这里也就不多说了。

  

Resource有一个子接口叫做ResourceLoader,这个接口主要通过getResource(String)方法定位和查找资源,其实现类有以下两个:

DefaultResourceLoader:首先尝试classpath:前缀打头;若没有尝试URL定位;还是没有最后会委派给getResourceByPath(String) 方法来定位构造ClassPathResource类型的资源并返回

FileSystemResourceLoader:继承自DefaultResourceLoader覆写了getResourceByPath(String)方法,使之从文件系统加载资源并以FileSystemResource类型返回

 

 当然,不得不提一下ResourcePatternResolver,它是ResourceLoader的子接口,并且定义了Resource[] getResources(String)方法用来批量查找资源。看这个接口的名字就知道它与正则表达式有关,其最常用的实现类为PathMatchingResourcePatternResolver

  

说了这么多关于资源加载、定位和查找的东东,那这和ApplicationContext有什么关系呢?在使用BeanFactory的时候我们知道,必须要通过Resource类加载资源。而ApplicationContext是一个接口,其实现类都会直接或间接地继承AbstractApplicationContext这个类,而这个类就继承了DefaultResourceLoader这个ResourceLoader的实现类。也就是说ApplicationContext可以直接自己去定位和查找资源,而不用像BeanFactory那样通过组合实现,代码上更简洁了一些。

 

ResourcePatternResolver呢,ApplicationContext当然不会放弃这么有用的接口,在AbstractApplicationContext内部声明了一个ResourcePatternResolver的成员,实现就是上面说的PathMatchingResourcePatternResolver。而PathMatchingResourcePatternResolver在构造的时候需要一个ResourceLoader参数,好吧,这时候直接把AbstractApplicationContext自己(this)传入就万事OK了。

  

下面说下ApplicationContext的实现类,很简单,最常用的就是ClassPathXmlApplicationContextclasspath:前缀)和FileSystemXmlApplicationContext。功能嘛,通过名字一目了然,构参都是一个String类型的路径,没什么好说的。

  

现在,你可以使用ApplicationContext去改写那些使用BeanFactory的应用了,毕竟BeanFactory已经不推荐使用了,而且ApplicationContext更加简洁实用,功能也更多。

  

在我们学习和使用Spring的时候,我们经常会看到一些以Aware结尾的接口,比如ResourceLoaderAwareApplicationContextAware。去看源码(好吧,这个我经常会说到,也是学习语言或框架必须的过程),我们可以看到这些接口都继承自一个空接口Aware,其内部也只有一个setXXX的方法。这些接口的作用简单来说就是在这些Bean初始化之后,Spring按照实现的接口自动注入相应的资源,这样这个Bean就可以拥有一些资源的功能。

<!--EndFragment-->
分享到:
评论

相关推荐

    三、Spring源码分析——ApplicationContext

    《Spring源码分析——ApplicationContext》 在Java世界中,Spring框架是不可或缺的一部分,它以其强大的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)特性,极大地...

    Spring获取ApplicationContext对象工具类的实现方法

    在Spring中,ApplicationContext(应用程序上下文)是容器的核心,负责配置和管理应用中对象的生命周期和依赖关系。在实际开发过程中,经常需要从各个角落获取到这个ApplicationContext对象,以便于能够使用Spring...

    Spring MVC开发配置文件 applicationContext

    Spring Web MVC开发 xml配置文件格式,无bean之类 Spring Web MVC开发配置文件 applicationContext

    Spring中ApplicationContext和beanfactory区别.rar

    在Spring框架中,ApplicationContext和...而ApplicationContext则是更为强大的上下文容器,提供了丰富的功能,是大多数Spring应用的首选。理解这两种容器的差异,有助于我们根据项目的具体需求来合理选择和使用。

    spring+jpa的applicationContext.xml配置

    spring+jpa的applicationContext.xml配置

    Spring中ApplicationContext加载机制

    Spring中ApplicationContext加载机制 ApplicationContext 是 Spring 框架中的核心组件之一,负责加载和管理应用程序中的 Bean 对象。在 Web 应用程序中,ApplicationContext 的加载机制是非常重要的, Spring 提供...

    Java EE 框架整合开发⼊⻔到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf

    这份文档名为《Java EE 框架整合开发入门到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf》,它显然是关于Java EE中流行的三个框架整合使用的教程。这三个框架分别是Spring、Spring MVC和MyBatis,...

    Spring————面试题库

    ApplicationContext在BeanFactory的基础上提供了额外的功能,比如国际化文本消息的支持、统一资源文件的读取方式以及监听器中注册的bean事件等。 Spring提供了三种配置方式:基于XML的配置、基于注解的配置和基于...

    Spring 2.5-applicationContext.xml提示信息的配置

    在Spring框架中,`applicationContext.xml`是应用上下文的核心配置文件,用于定义bean的创建、依赖关系以及各种服务的配置。这篇博文“Spring 2.5 - applicationContext.xml提示信息的配置”主要探讨了如何在Spring ...

    spring3.0 + Quartz1.52 + applicationContext.xml

    这个压缩包“spring3.0 + Quartz1.52 + applicationContext.xml”显然是一个关于如何在Spring 3.0环境中集成Quartz 1.52版本的示例或教程资源。 首先,`applicationContext.xml`是Spring框架的核心配置文件,它定义...

    spring學習筆記——Helloworld

    在本篇“Spring学习笔记——HelloWorld”中,我们将探讨Spring框架的基础知识,以及如何创建一个简单的Spring应用程序。Spring是一个广泛使用的Java企业级应用开发框架,它提供了丰富的功能,包括依赖注入、AOP...

    spring4的所有jar包+applicationContext.xml+web.xml

    2. **ApplicationContext.xml**:这是Spring应用上下文的配置文件,它定义了bean的创建、依赖关系以及其他的配置信息。在`applicationContext.xml`中,我们可以声明bean的实例化、属性注入、bean之间的依赖关系、AOP...

    spring为ApplicationContext提供的3种实现分别为:ClassPathXmlApplicationContext

    在 Spring 中,ApplicationContext 是一个至关重要的接口,它是应用上下文的实现,负责管理bean的生命周期和装配。标题提到的“ClassPathXmlApplicationContext”是 Spring 提供的三种 ApplicationContext 实现之一...

    spring 获得applicationcontext公用方法

    综上所述,`Spring 获得applicationcontext公用方法`涉及了Spring框架中的核心概念,包括`ApplicationContext`的创建、获取以及在实际项目中的使用方式。通过`MyApplicationContextUtil`这样的静态工具类,我们可以...

    二、Spring源码分析——BeanFactory

    《Spring源码分析——BeanFactory》 在Java的IoC(Inversion of Control)和DI(Dependency Injection)领域,Spring框架扮演着至关重要的角色。BeanFactory是Spring的核心组件之一,它是容器的基石,负责管理应用...

    spring知识点总结

    “知识点总结.xls”可能是一个整理好的Spring框架关键知识点的表格,可能包含了Spring的主要模块(如Core Container、Data Access/Integration、Web、AOP、Test等)、关键概念(如Bean、ApplicationContext、IoC容器...

    spring的Applicationcontext对事件的监听,实现类似MQ的效果

    在Spring框架中,`ApplicationContext`不仅是一个容器,用于管理Bean的生命周期和依赖注入,它还提供了事件发布和监听的功能。这个特性使得Spring应用能够实现组件间的异步通信,类似于消息队列(MQ)的工作模式。...

    spring2.5的applicationContext配置文件

    在Spring框架中,`applicationContext.xml`是核心的配置文件,它定义了bean的实例化、依赖注入、服务的装配以及整个应用上下文的行为。在Spring 2.5版本中,这个配置文件引入了许多增强的功能,提升了开发效率和灵活...

    Spring配置文件ApplicationContext

    Spring配置文件ApplicationContext,内容齐全,有需要的可以下载。

Global site tag (gtag.js) - Google Analytics