Refresh Scope
当配置发生改变时,一个被标记成@RefreshScope 的spring bean 将会被特殊对待。仅仅获取它们在初始化时被注入的配置时解决有状态的bean的一种途径。例如,当database URL被改变时,DataSource已经打开连接了,我们期望持有的这些连接可以完成它们的操作。下一次从池里面获取的连接是是用新的url。
刷新scope beans 使用懒加载策略,当需要时才被加载(当方法被调用时)。并且scope做为初始值的缓存。强制bean在方法调用时重新初始化只需要使缓存的数据无效。
RefreshScope是上下文的bean,它有一个公有的方法refreshAll(),这个方法会通过情况目标缓存刷新所有的bean。refresh(String)方法会通过name刷新个别的bean。这个功能通过\/refresh端暴露出来(通过http火灾jmx)
注意@RefreshScope在@Configuration类上作业。它有可能会带来一些意外的结果:如,这不意味着定义在这个类中的所有@bean是它们本身。特别指出,当刷新被启动,任何依赖这些bean的实例不会更新,除非它们本身是@RefreshScope (它将会重新构建并且它的依赖会重新注入,刷新@Configuration)它们会被重新初始化)。