首页
学习
活动
专区
圈层
工具
发布

spring的BeanFactory和ApplicationContext

接口 在spring容器中,BeanFactory接口是IOC容器要实现的最基础的接口,定义了管理bean的最基本的方法,例如获取实例、基本的判断等,如下图: BeanFactory有多个子接口来进一步扩展...ApplicationContext继承下来了,另外通过类图可以发现,ApplicationContext还继承了诸如Environment、Resource、Message、Event 等相关的接口...(应用事件)等服务相关的接口,简单的说ApplicationContext是以bean管理为基础的综合能力扩展,用于满足业务对Spring综合能力的需要; 再看看ApplicationContext源码...BeanFactory是基础,BeanFactory和它的子接口定义的API满足了spring环境中对bean管理和配置的需求; 2....方法生成的; 至此,通过查看源码,我们对spring的BeanFactory和ApplicationContext有了更清晰的认识,又经历了一次结合类图分析源码的实践,在您学习spring的路上,希望本文能助您一臂之力

40020
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    怎么获取Spring的ApplicationContext

    在 WEB 开发中,可能会非常少须要显示的获得 ApplicationContext 来得到由 Spring 进行管理的某些 Bean, 今天我就遇到了,在这里和大家分享一下, WEB 开发中,怎么获取...ApplicationContext 一 要想怎么获取 ApplicationContext, 首先必须明确 Spring 内部 ApplicationContext 是如何存储的。...这样的方法一般用在你自定义了一个Listener而且实现了ServletContextListener接口,在web.xml中你须要把这个Listener配置好 <!...-- 用于做初始化工作的监听器,一定要配置到Spring的ContextLoaderListener之后,由于要用到Spring的容器对象 --> <listener-class...(“beanId”); 说明:这样的方式适用于採用Spring框架的独立应用程序,须要程序通过配置文件手工初始化Spring的情况。

    1.2K10

    Spring获取ApplicationContext的工具类

    在项目中,经常遇到这样的问题:有些类需要使用new来创建对象,但是类中需要使用spring容器中定义的bean,此时无法通过spring的自动注入来注入我们需要使用的bean。...所以需要手动的从spring容器中获取bean。要获取bean必须先获取到ApplicationContext对象,有以下方式可以获取该对象。...另外,由于spring是容器的对象放在ServletContext中的,所以可以直接在ServletContext取出 WebApplicationContext 对象。...这样spring容器在启动的时候,会通过父类ApplicationObjectSupport中的setApplicationContext()方法将ApplicationContext对象设置进去。...spring容器在启动的时候,会调用setApplicationContext()方法将ApplicationContext 对象设置进去。

    86510

    Spring源码系列:详解ApplicationContext

    前言在之前的文章中,我们已经对Spring源码中的一些核心概念进行了分析。由于篇幅限制,我们并没有详细解释ApplicationContext类所继承的父接口及其作用。...EnvironmentCapable获取运行时环境可以使用ApplicationContext的getEnvironment方法,具体用法如下:// 创建一个Spring容器AnnotationConfigApplicationContext...Spring的事件也可以监听到,因此在监听部分需要自己判断是什么事件。...的父接口,它是Spring内部提供的一种比较器,用于排序实现了Order接口或者@Order注解的bean。...结语至此,Spring的核心概念解析告一段落,但这只是一个开始,后续我们将深入理解Spring的源码。因此,建议仔细查看Spring的核心关键类,对于后续查看Spring源码会非常有帮助。

    33642

    Spring 源码脉络IOCDI -BeanFactory、ApplicationContext

    Spring是一个非常活跃的开源框架;它是一个基于Core来架构多层JavaEE系统的框架,它的主要目的是简化企业开发。...Spring以一种非侵入式的方式来管理你的代码,Spring提倡“最少侵入,这也意味着你可以适当的时候安装或卸载Spring。...1、BeanFactory 2、ApplicationContext 3、Bean创建过程 4、容器扩展 5、感知接口 *Aware 6、广播与监听 7、资源 8、运行环境抽象 BeanFactory....refresh() 源码脉络 ApplicationContext - 继承于BeanFactory,包括了BeanFactory的所有功能 AbstractApplicationContext ....完成上下文的刷新工作,调用LifecycleProcessor的onFresh()及发布的ContextRefreshEvent事件 resetCommonCaches() 重置Spring公共的缓存

    46620

    ApplicationContext(1)--Spring源码解析(一)

    register(annotatedClasses); refresh(); } AnnocationConfigApplicationContext构造方法: 第一个this代表他调用自己的构造函数之前...,先会去调用父类的构造函数。...这里有一个面向对象的理念,当调用子类构造无参构造函数的时候,先会调用父类的无参构造函数。 再看看父类无参构造函数做了什么?...父类无参构造函数运行完毕之后,回到我们子类的无参构造函数,里面有一个AnnotatedBeanDefinitionReader和CLassPathBeanDefinitionScanner,在reader...接下来从getSingleton方法里的缓存中获取,先从一级缓存,没有再从二级,三级缓存中获取。 之后调用下面的getSingleton里的createBean方法,开始正式的创建bean。

    39610

    Spring 学习笔记(三)——IoC容器(ApplicationContext)

    ApplicationContext     ApplicationContext接口使BeanFactory的子接口,代表一个应用的上下文环境。   ...ApplicationContext扩展了很多使用的功能,如     Bean的生命周期管理     框架事件体系     国际化支持等   同时,ApplicationContext接口还通过继承其他接口扩展了...BeanFactory的功能:   MessageSource———为应用提供国际化访问功能   ResourceLoader———提供资源(如URL和文件系统)的访问支持   ApplicationEventPublisher...----   ApplicationContext的主要实现类有     ClassPathXmlApplicationContext(从类路径加载IoC配置文件);     FileSystemXmlApplicationContext...ApplicationContext在初始化上下文时就实例化所有单实例的Bean。 ---- Bean的生命周期 ?

    45550

    Spring ApplicationContext 源码深度剖析:容器的核心引擎

    Spring ApplicationContext 源码深度剖析:容器的核心引擎在 Spring 框架中,ApplicationContext(应用上下文)是容器功能的核心载体,它不仅负责 Bean 的创建与管理...Spring 提供了多种ApplicationContext实现,适用于不同场景:ClassPathXmlApplicationContext:从类路径加载 XML 配置文件FileSystemXmlApplicationContext...增强 Bean 功能自定义ApplicationEvent和ApplicationListener实现组件解耦通过Environment获取配置信息,实现环境隔离总结ApplicationContext...:事件发布机制实现组件解耦装饰器模式:资源加载机制对不同资源类型的统一封装理解ApplicationContext的源码不仅能帮助我们更好地使用 Spring 框架,更能学习到大型框架的设计思路。...建议开发者结合实际场景,多阅读源码、多调试跟踪,逐步体会 Spring 框架的设计哲学,从而在开发中更加游刃有余。

    35300

    SpringBoot应用使用自定义的ApplicationContext实现类

    为什么要自定义application context 在学习spring容器初始化的过程中,发现spring容器预留了一些扩展点,我们可以写子类来做功能扩展,例如AbstractApplicationContext...ApplicationContext实现类,是自己写代码来指定的,下面是基于spring框架的应用的启动代码: public static void main(String[] args) {...实现类,用在spring环境中,所以,我们在自定义ApplicationContext实现类时,用AnnotationConfigServletWebServerApplicationContext作为父类最合适...,就达到了使用自定义ApplicationContext实现类的目的,那么如何设置成员变量applicationContextClass呢?...的源码,搞清楚了spring环境的ApplicationContext实现类在SpringBoot框架下如何指定,也做了一次简单的自定义实战,今后在研究和学习spring过程中,如果需要扩展spring

    1.4K10
    领券