Spring Boot · Bean的动态配置

Spring Cloud: @RefreshScop

Spring Cloud中提供@RefreshScope注解,为Bean提供新的注入方式,实现Bean的动态配置。

  • 简单介绍一下Spring Cloud刷新Bean的原理

  • 1、自定义Scope:refresh。如同单例模式singleton。处理类:org.springframework.cloud.context.scope.GenericScope.java

  • 2、使用代理。@RefreshScopeScopedProxyMode proxyMode() default ScopedProxyMode.TARGET_CLASS;,创建基于类的代理(使用CGLIB),主要作用:实现懒加载,使用时进行对象获取(调用GenericScope.java中的get方法返回类对象)。

  • 3、自定义缓存。GenericScope.java的get方法中,逻辑:从缓存(自定义集合)中获取bean对象,如果不存在对象,调用bean的创建方法:objectFactory.getObject(),重新创建bean对象进行缓存。

  • 4、bean刷新。使缓存失效:在缓存bean的集合中调用remove方法,简单的说就等于map.remove(key),获取不了缓存对象,就会导致bean在使用时,触发bean的重新创建,获得的新bean对象再进行缓存,完成bean的刷新。

    p.s. 版本:spring-cloud-contest-2.1.1

转载于:https://juejin.im/post/5cae9adde51d456e60003aa5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值