Spring @Value注入属性获取不到值

今天在Spring boot中使用@Value发现获取不到值,但在另一个类中@Value注解确认获取到,我的代码如下:

@Component
public class EsClientWithSG {
    private TransportClient transportClient=null;
    private volatile boolean isClose = false;
    @Value("${environment}")
    private String environment;

    public EsClientWithSG(){
        //这里得到的environment为null
        String path="/config"+environment+"config.xml";
    }

原来是我在默认的构造函数里去获取自动注入的environment属性,此时Spring还未将该属性注入,因此为null,可以改为如下

@Component
public class EsClientWithSG {
    private TransportClient transportClient=null;
    private volatile boolean isClose = false;
    @Value("${environment}")
    private String environment;
    //注意我们删除了构造函数
    @PostConstruct //加上该注解表明该方法会在bean初始化后调用
    private void init(){
       //这里便可以获取到environment
        String path="/config"+environment+"config.xml";
    }

你可能感兴趣的:(Java,Web)