首页 > 解决方案 > Spring Boot:@Value 返回 null

问题描述

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

我对这个 Spring Boot 有类似的问题:@Value 总是返回 null。我有的例子:

系统属性

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

豆配置

@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;
    }
}

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

标签: spring-bootjavabeans

解决方案


请使用 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;
    }
}

推荐阅读