Spring Boot:@Value返回null

问题描述

我是springmvc的新手,所以这个问题听起来很愚蠢。

我与此Spring Boot: @Value returns always null有类似的问题。我有的例子:

系统属性

<sysproperty key="bar" value="bar_value" />

Bean配置

@Configuration
public class Foo {
    @Value("${bar}")
    private String bar;
  
    @Bean(name = "getBar")
    public String getBar() { 
        return bar;
    }
}

访问Bean(index.jsp)

String bar = webApplicationContext.getBean("getBar",String.class); // returns null instead of "bar_value"

但是,如果我将Bean配置更改为

@Configuration
public class Foo {
    @Value("${bar}")
    @Bean(name = "getBar")
    public String getBar(String bar) { 
        return bar;
    }
}

然后访问它,返回的值正确,这可能是什么原因?我知道事情是由框架控制的,所以我对应用程序的实例化过程没有太多了解,可以得到帮助。

解决方法

请使用Setter注入。希望它能解决您的问题。


public class Foo {
    
    private String bar;
    
    @Autowired
    public setBar(@Value("${bar}") String bar) {
        this.bar = bar;
    }
    
    // standard getter
    @Bean(name = "getBar")
    public String getBar() { 
        return bar;
    }
}