Spring @Value(“${}”) 通常为 null

我正在使用Spring Boot应用程序。在某些类中,字段是加载的,而在其他类上,它们始终是 。@Component@Valuenull

似乎(s)在我的/被创建后加载。@Value@Bean@Component

我需要从我的.@Bean

你有什么建议吗?


答案 1

属性(和所有 Bean 依赖项)在 Bean 构造(构造函数的执行)后注入。

如果需要,可以使用构造函数注入。

@Component
public class SomeBean {
    private String prop;
    @Autowired
    public SomeBean(@Value("${some.prop}") String prop) {
        this.prop = prop;
        //use it here
    }
}

另一种选择是移动带有注释的方法中的构造函数逻辑,该逻辑将在创建Bean并解析其所有依赖项和属性值后执行。@PostConstruct


答案 2

当您将其解析为静态变量时,可能会发生这种情况。我很久以前就观察到了这一点,并通过删除静态来解决它。正如人们常说的那样,在使用静电时要小心。


推荐