我正在使用 Spring Boot 应用程序。在某些@Component
类@Value
字段中加载,而不是在其他类中它们始终是null
.
似乎(s)是在我的/创建@Value
之后加载的。@Bean
@Component
我需要从我的@Bean
.
你有什么建议吗?
我正在使用 Spring Boot 应用程序。在某些@Component
类@Value
字段中加载,而不是在其他类中它们始终是null
.
似乎(s)是在我的/创建@Value
之后加载的。@Bean
@Component
我需要从我的@Bean
.
你有什么建议吗?
属性(以及所有的 bean 依赖项)在 bean 被构造(构造函数的执行)之后被注入。
如果你需要它们,你可以使用构造函数注入。
@Component
public class SomeBean {
private String prop;
@Autowired
public SomeBean(@Value("${some.prop}") String prop) {
this.prop = prop;
//use it here
}
}
另一种选择是移动方法中的构造函数逻辑,并@PostConstruct
在创建 bean 并解析它的所有依赖项和属性值后执行注解。
当您将其解析为静态变量时,可能会发生这种情况。我曾经观察过这一点,并通过消除静电来解决它。正如人们常说的那样,使用静电时要小心。
你有没有尝试过:
@Component
@PropertySource("file:/your/file/path")
public class MyBean {
private @Value("${property}") String property;
...
}
另一个可能的原因是“@Value”行位于需要这些属性/值的行下方。
我花了很多时间调试这个问题,发现行的顺序很重要!