Java 使用@RefreshScope刷新配置属性的线程安全性

Java 使用@RefreshScope刷新配置属性的线程安全性,java,spring,spring-boot,thread-safety,configurationproperties,Java,Spring,Spring Boot,Thread Safety,Configurationproperties,我有一个用@ConfigurationProperties注释的bean,其中我有应用程序绑定所需的属性。我还用@RefreshScope注释了这个类,这样我就可以刷新运行时更改的任何配置属性 基本版本如下所示: @Component @RefreshScope @ConfigurationProperties public class ServiceProperties { String name; public String getName() { retu

我有一个用
@ConfigurationProperties
注释的bean,其中我有应用程序绑定所需的属性。我还用
@RefreshScope
注释了这个类,这样我就可以刷新运行时更改的任何配置属性

基本版本如下所示:

@Component
@RefreshScope
@ConfigurationProperties
public class ServiceProperties {
    String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    } 
}
不同的线程将不断调用
getName()
方法

我查看了Spring的以下文档:

刷新作用域bean是惰性代理,在使用它们时(即调用方法时)进行初始化,作用域充当初始化值的缓存。要强制bean在下一次方法调用时重新初始化,必须使其缓存项无效

RefreshScope是上下文中的一个bean,它有一个公共refreshAll()方法,可以通过清除目标缓存来刷新作用域中的所有bean。/refresh端点(通过HTTP或JMX)公开此功能。要按名称刷新单个bean,还有一个refresh(String)方法。”

我从上述文档中了解到,在调用刷新(通过执行器/执行器/刷新或其他方式)时,bean将被重新创建并再次初始化

我的问题是:整个过程是线程安全的吗?注意确保在这个bean刷新过程中,试图访问上述类中的name属性的线程之间不会出现任何竞争条件。我没有从Spring找到任何关于此的明确文档。

请参阅