繁体   English   中英

@PostConstruct 方法中初始化的变量是否需要在 Spring 框架中声明为 volatile?

[英]Do variables initialized in the @PostConstruct method need to be declared as volatile in Spring Framework?

我在 Spring singleton bean @PostConstruct 方法(简化代码)中做了一些初始化:

@Component
public class Env {
    public String currentEnv;

    @PostConstruct
    public void init() {
        currentEnv = "dev";
    }
}

我是否应该担心 currentEnv 对其他 bean(其他线程)的可见性并将其标记为 volatile。

默认情况下,使用@Component定义的 Spring 管理的 Bean 是 Singleton。 这意味着如果您将Env注入到另一个 Spring 管理的 Bean 中并且假设currentEnv是公共的,那么另一个 Bean 可以访问它。

我建议将currentEnv私有并为该属性创建一个 getter:

@Component
public class Env {
    private String currentEnv;

    @PostConstruct
    public void init() {
        currentEnv = "dev";
    }

    public String getCurrentEnv() {
        return currentEnv;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM