首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

@刷新范围通过BeanDefinitionRegistryPostProcessor注册的带注释的Bean在云配置更改时不会被刷新

BeanDefinitionRegistryPostProcessor是Spring框架中的一个扩展点,用于在应用程序上下文启动时动态注册Bean定义。它允许开发人员在应用程序启动过程中对Bean进行自定义处理。

在云计算环境中,应用程序通常会使用云配置来管理其配置信息。云配置可以根据需要进行动态更改,以适应不同的部署环境或配置需求。然而,对于通过BeanDefinitionRegistryPostProcessor注册的带注释的Bean来说,它们的初始化是在应用程序启动时进行的,一旦初始化完成,它们的配置信息就会被固定下来,不会随着云配置的更改而刷新。

这是因为BeanDefinitionRegistryPostProcessor在应用程序启动时只会被调用一次,它们的作用是在应用程序上下文中注册Bean定义,而不是在运行时动态创建Bean实例。因此,一旦Bean定义被注册,它们的配置信息就会被固定下来,不会再受到云配置的影响。

如果希望在云配置更改时刷新Bean,可以考虑使用其他机制,如使用Spring Cloud Config来管理配置信息,并结合Spring Cloud Bus来实现配置的动态刷新。这样,在云配置发生更改时,可以通过触发配置刷新事件来刷新Bean的配置信息。

腾讯云提供了一系列与云计算相关的产品,如云服务器、云数据库、云存储等。您可以根据具体的需求选择适合的产品进行部署和管理。具体的产品介绍和相关链接地址可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2.3 spring5源码系列---内置后置处理器PostProcess加载源码

配置类被传进来以后, 到底是怎么被解析呢? 这就是我们分析线索 始终不要忘记我们整体架构图. 对照这个图来分析. 思路清晰....(BeanDefinitionRegistryPostProcessor注册功能后置处理器) 第二步: 调用BeanFactoryPostProcessor Bean工厂后置处理器 第一步:...(BeanDefinitionRegistryPostProcessor注册功能后置处理器) * 第二步: 调用BeanFactoryPostProcessor Bean工厂后置处理器...main方法中调用了两次(Car) context.getBean("car"); new一个对象时候, 如果取ioc容器中取, 那么每一次都会创建一个新....(BeanDefinitionRegistryPostProcessor注册功能后置处理器) * 第二步: 调用BeanFactoryPostProcessor Bean工厂后置处理器

47530

Spring5源码分析之@Configuration注解详解。希望读者能够耐着性子看完

前言: 对于Spring创建Bean方式我相信大家 并不陌生,绝大数同学其实都知道Spring最初就是通过xml方式去初始化Bean并完成依赖注入工作,但是Spring3.0之后,spring...容器初始化时Configuration类会被注册Bean容器中,最后还会被实例化。...同@Profile注解组合使用 配置类可以声明**@Profile**注解,仅当满足profile条件时,才会处理配置类,也可以将@Profile注解加载配置类中每一个@Bean来实现细粒度条件控制...@Lazy初始化 默认情况下,配置类中Bean都随着上下文被初始化,可以配置类中添加@Lazy注解来延迟初始化,当然也可以每个@Bean注解上添加,来实现细粒度控制。...容器实际实例化任何其他bean之前来读取配置元数据,并可能修改它,也可以配置多个BeanFactoryPostProcessor * ,可以通过order属性来控制

36200

springBean加载过程

参考文章 spring Bean加载过程 1、找准入口 ,使用ClassPathXmlApplicationContext加载配置文件,用于加载classPath下配置文件 //第一行,执行完成之后就完成了...synchronized (this.startupShutdownMonitor) { //刷新之前设置一些参数,比如设置开始时间戳,上下文是否激活标志,输出刷新上下文信息,验证一些必要属性...spring配置文件加载之后执行,单例实例化之前调用,因此可以在其中修改和获取bean实例化信息,通过BeanDefintion ​ 2、先调用BeanDefinitionRegistryPostProcessor...BeanFactoryPostProcessor思想一样,按照优先级注册通过判断是否实现PriorityOrdered和orderd接口,按照优先级排序注册到BeanFactory中,其实注册方法就是将这个后置处理器添加到...= obtainFreshBeanFactory():从spring配置文件中加载bean,封装成BeanDefinition,注册注册表中,创建beanFactory ​ 3、prepareBeanFactory

1.7K10

【小家Spring】Spring IOC容器启动流程 AbstractApplicationContext#refresh()方法源码分析(一)

Bean本身调用方法和通过配置文件中init-method和destroy-method指定方法 初识 因为我们项目的案例是全注解驱动,因此我们容器实例为:AnnotationConfigWebApplicationContext...(若你是xml配置驱动,则为XmlWebApplicationContext) 为了方便了解容器类继承关系,贴出如下类继承图: ?...resetCommonCaches(); } } } 通过上面的注释,已经能够比较宏观了解到容器一个初始化过程了,那么接下来,将针对每一个步骤,进行微观源码级别的解释说明。...),会让代码看起来十分优雅(重复工作太多)。...也完成了对配置文件解析,可以说Spring IOC容器准备工作已经完成了,接下来一篇博文里,会详细讲述到对Bean一些初始化、以及操作~

2.9K21

Spring源码阅读之一

xml、注解Bean定义信息,可以通过ClassPathXmlApplicationContext进行配置文件路径读取。...并放入ApplicationEventMulticaster中 留给子类来初始话其他类,也就是子类重写这个方法,容器刷新时候自定义逻辑 在所有注册Bean中找到Listener Bean 注册到消息广播中...容器实例化任何其他bean之前读取配置元数据,并进行修改,也可以配置多个BeanFactoryPostProcessor,可以通过order属性来控制BeanFactoryPostProcessor...和 手动注册 BeanFactoryPostProcessor // 接下来要处理通过配置文件注册 BeanFactoryPostProcessor // Do not...、注册注册**,真正调用其实是bean实例化阶段进行,这是一个很重要步骤,也是很多功能`BeanFactory`不知道原因。

28820

spring源码篇(五)启动过程

前言 前面我们了解了bean实例化过程,依赖注入,大体上对一个bean创建有了认知,那么现在从spring启动来看它一个架构,本来是想把配置类扫描也加载本章,但两个主题并不相同,就拆开了。...而ConfigurationClassPostProcessord这个是配置后置处理器,后面我们配置类扫描是它里面实现。 其他先忽略。...;环境配置加载,必要属性验证等 prepareRefresh(); // 刷新beanFactory,并获取一个空beanFactory, // 这时beanFactory...lifecycle生命周期回调 完成启动时,会去调用lifeCycle类,从代码看,我们只要实现Lifecycle接口,就可以spring启动完成时执行回调。这个应用篇有过例子,这里写了。...将我们配置类加载为一个bean定义(beanDefinition) (refresh方法)环境配置、必要属性设置 刷新beanFactory 设置beanFactory:

58120

springboot源码解析(四)

之前通过debug方式详细了解了SpringBoot启动配置文件加载和容器初始化相关工作。但是对于核心refresh()没有进行解析。...正如一个人只能挣他认知范围钱一般,一时思绪万千和急性死记硬背都毫无意义。从某种意义上说我其实是洗涤我自己。而观众体验如何并非我关心主体,虽然我希望我说对大家有点用。...而这里说子类就是我们SpringApplication中创建content,也就是AnnotationConfigServletWebServerApplicationContext //刷新容器之前做一些准备工作...而这里方法只是设置了容器被刷新标志并没有做其他操作。因为之前已经创建好了bean工厂。如下图所示就是debug结果,发现我们之前注入bean还在该方法返回工厂中。 ?...也就是实现了BeanDefinitionRegistryPostProcessor接口实体并注册到content中。

37320

Spring容器refresh()

; 1)、子类通过重写这个方法来BeanFactory创建并预准备完成以后做进一步设置 ======================以上是BeanFactory创建及预准备工作=====...BeanFactory标准初始化之后执行; 两个接口:BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor 1...; MessageSource:取出国际化配置文件中某个key值;能按照区域信息获取; 3)、把创建好MessageSource注册容器中,以后获取国际化配置文件时候...如果能获取到说明这个Bean之前被创建过(所有创建过单实例Bean会被缓存起来) 从private final Map singletonObjects =...Bean定义信息; 1)、xml注册bean; 2)、注解注册Bean;@Service、@Component、@Bean、xxx 2)、Spring容器会合适时机创建这些Bean

42810

【Spring源码】- 02 Spring IoC容器启动之refresh方法

BeanDefinition,注册到IoC容器中,后续ConfigurationClassPostProcessor这个BeanFactory后置处理器IoC开始真正初始化时,可以获取到这些配置BeanDefinition...这里就会有个前面提到Spring中非常重要一个类:ConfigurationClassPostProcessor开始被执行,它执行完成后,所有需要Spring管理Bean会被解析成BeanDefinition...执行完这步,你只需要简单知道@Configuration、@Bean、@Import、@ComponentScan、@Component等等相关配置注解会被处理,相关Bean也被解析成BeanDefinition...方法时,存在可能会向IoC容器中注册BeanDefinitionRegistryPostProcessor通过循环保证都会被执行; 2、然后执行BeanDefinitionRegistryPostProcessor...上,注册完以后,还会将其前期事件发布给相匹配监听器。

48721

Spring创建和初始化源码流程分析

Spring容器refresh()===>创建和刷新容器 1.prepareRefresh():刷新预处理工作 1.1 initPropertySources() :初始化一些属性设置 1.2...(做国际化,消息绑定,消息解析) messaegSource:取出国际化配置文件中某个Key值,能按照区域信息获取 ---- 8 initApplicationEventMulticaster()...(beanFactory): 初始化所有剩下单实例bean ---- 11.1 preInstantiateSingletons()初始化剩下所有单实例bean 这里如果在通过id获取对应...BeanFactory初始化和创建流程,IOC容器finish前一步已经创建完成 ---- 大总结: 1.Spring容器启动时候,会先保存所有注册进来bean定义信息 1.1 xml...注册bean==> 1.2 注解注册bean===>@Service,@Component,@Bean… 2.Spring容器会在合适时机创建这些bean 2.1 用到这个bean时候,利用getbean

44330

Spring容器启动流程

到容器中 2、将配置BeanDefinition注册到容器中 3、调用refresh()方法刷新容器 因为是基于 java-config 技术分析源码,所以这里入口是 AnnotationConfigApplicationContext...子类通过重写这个方法可以 BeanFactory 创建并与准备完成以后做进一步设置 postProcessBeanFactory(beanFactory); // 5....留给子容器(子类),子类重写这个方法,容器刷新时候可以自定义逻辑,web 场景下会使用 onRefresh(); // 10....:如果有,直接赋值给messageSource;如果没有,则创建一个DelegatingMessageSource; (2)把创建好MessageSource注册容器中,以后获取国际化配置文件时候...: 前文我们说到,整个容器创建过程中,Spring 会发布很多容器事件,如容器启动、刷新、关闭等,这个功能实现得益于这里 ApplicationEventMulticaster 广播器组件,通过它来派发事件通知

51620

Spring IOC 源码分析

注册配置类(将配置注册Bean定义中) register(componentClasses); //IOC容器刷新接口 refresh(); } 我们先对这个构造方法做一个简单了解...2.实例化Bean读取器:Bean读取器底层会创建很多初始化类,如果创建这些初始化类并注册Bean容器中,那么后面的普通Bean对象也就无法加载到Spring容器中了 3.实例化Bean扫描器...1.通过AnnotatedGenericBeanDefinition构造方法,获得配置BeanDefinition,这里是不是似曾相似,注册ConfigurationClassPostProcessor...类构造方法,接着我们在看到本文最重要一块refresh()方法了 //IOC容器刷新接口 refresh(); 其实文章开始到这里,整个前面流程都只是将一些创世纪类和我们配置注册Bean定义...7.第6步时候,只是注册了部分Bean,像 @Import @Bean等,是没有被注册,这里统一对这些进行注册

32910

Spring源码学习笔记(10)——BeanFactoryPostProcessor

也就是说,Spring允许BeanFactoryPostProcessor容器实例化任何其它bean之前读取配置元数据,并可以根据需要进行修改,例如可以把beanscope从singleton改为prototype...可以同时配置多个BeanFactoryPostProcessor,并通过设置’order’属性来控制各个BeanFactoryPostProcessor执行次序。...BeanPostProcessor VS BeanFactoryPostProcessor BeanPostProcessor:拦截Bean创建后初始化操作,Bean初始化前/后执行额外处理。...(this.startupShutdownMonitor) { //刷新准备 prepareRefresh(); //刷新IoC容器内部BeanFactory...可以看到该方法obtainFreshBeanFactory()加载BeanDefinition后,finishBeanFactoryInitialization()实例化Bean之前。

25410

生病期间肝了3万字Spring容器启动流程

相信每一个使用过 Spring 技术同学都知道 Spring 初始化过程中有一个非常重要步骤,即 Spring 容器刷新,这个步骤固然重要,但是刷新初始化流程也非常重要。...Spring 配置类,其实也是解析成一个 BeanDefinition 然后注册到容器中,没有什么好说。...对象,然后通过反射创建 bean,并完成赋值操作,这个就是 IOC 容器最简单功能了。...,Spring 会发布很多容器事件,如容器启动、刷新、关闭等,这个功能实现得益于这里 ApplicationEventMulticaster 广播器组件,通过它来派发事件通知。...,这里我们只需要明白 Spring 是通过这个方法把容器中 bean 都初始化完毕即可。

59820

SpringBoot 通过SpringApplication 引导启动

refreshContext()——刷新上下文 应用程序上下文准备好后,可以通过刷新应用程序上下文发现Bean并加载到容器中。...,同时提供出一些符合外部用户使用接口。...以及一些后置处理器,比如ApplicationContextAwareProcessor(xxxAware接口就是通过后置处理器Bean创建时候,通过后置处理器设置)。...❝ 注意 Bean发现过程只是向BeanDefinition注册注册BeanDefinition过程,并没有针对发现Bean进行实例化(少部分需要用到Bean会进行实例化,比如这部分会对BeanDefinitionRegistryPostProcessor...❞ Bean实例化过程getBean()再以后文章中再介绍。 finishRefresh()——完成刷新 在这步主要是一些资源清理以及注册LifeCycleProcessor。

12910

Spring学习之浅析refresh()执行逻辑

startupDate, 标记容器为激活,初始化上下文环境如文件路径信息,验证必填属性是否填写 this.prepareRefresh(); // **告诉子类去刷新bean工厂,此方法解析配置文件并将...,意思是,当一个Bean需要注入对应类时,使用下面注册这些类 //比如,如果@Autowire 一个BeanFactory,那么这个BeanFactory实际就是在此处注册一个对象 /...(); //查询通过addBeanFactoryPostProcessor等方法设置进来BeanFactoryPostProcessor...key值;能按照区域信息获取; 将创建完成MessageSource注册容器中,以后获取国际化配置文件时候,可以自动注入MessageSource; protected void initMessageSource...// 查出所有通过addApplicationListener方法添加ApplicationListener,然后注册到事件广播器上 for (ApplicationListener<

51322

Spring Cloud中@RefreshScope实现动态刷新原理

更新本地Environment对象: 刷新事件被触发之前或之后,需要更新本地Environment对象,以反映外部配置源中最新配置。...刷新过程中,缓存中Bean实例会被销毁,新Bean实例会被创建并缓存起来,以供后续使用。 3....当RefreshEvent被触发时,handle方法会被调用,进而执行刷新逻辑。 刷新逻辑中,首先会刷新SpringEnvironment对象,这通常涉及重新加载配置属性。...RefreshScope是GenericScope一个扩展,它提供了额外逻辑来处理配置刷新refreshAll方法中,通过调用父类destroy方法来销毁当前作用域中缓存所有Bean实例。...因此,使用动态刷新配置时,需要权衡利弊,并谨慎选择需要刷新Bean配置

64410
领券