我正在使用Spring Boot应用程序。在某些@Component
类中,@Value
字段被加载,而在其他类中它们始终为null
。
看起来@Value
是在我的@Bean
/@Component
创建后才加载的。
我需要从属性文件中加载一些值到我的@Bean
中。
你有什么建议吗?
我正在使用Spring Boot应用程序。在某些@Component
类中,@Value
字段被加载,而在其他类中它们始终为null
。
看起来@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创建后执行,并解析其所有依赖项和属性值。
当你将它解析为静态变量时,这种情况可能会发生。我之前曾经观察到过这种情况,并通过去掉static来解决它。正如人们常说的那样,在使用static时要小心谨慎。
你尝试过了吗:
@Component
@PropertySource("file:/your/file/path")
public class MyBean {
private @Value("${property}") String property;
...
}
@Component
жіЁи§ЈдәҶиҜҘзұ»пјҹ - Efe Kahraman