问题描述
您正在寻找的“魔术”课是PropertiesConfigurationFactory
。但是我会问您是否需要它-
如果只需要绑定一次,那么Spring应该能够为您完成它,并且如果您遇到生命周期问题,最好解决这些问题(以防它们破坏其他东西)。
解决方法
有什么方法可以在@ConfigurationProperties
不直接使用Spring
Context的情况下加载带有标记的类?基本上,我想重用Spring所做的所有智能逻辑,但是对于在bean生命周期之外手动实例化的bean。
我有一个可以在Spring(引导)中愉快地加载的bean,可以将其注入到其他Service bean中:
@ConfigurationProperties(prefix="my")
public class MySettings {
String property1;
File property2;
}
详情参见春天docco http://docs.spring.io/spring-boot/docs/current-
SNAPSHOT/reference/htmlsingle/#boot-features-external-config-command-line-
args
但是现在我需要从Spring之外(由Hibernate创建)的类访问该bean。该类是在应用程序启动过程的早期创建的,以至于Spring
Boot尚未通过经典的查找帮助器方法或“我自己拥有”的静态引用使应用程序上下文可用。
所以我想做些类似的事情:
MySettings mySettings = new MySettings();
SpringPropertyLoadingMagicClass loader = new SpringPropertyLoadingMagicClass();
loader.populatePropertyValues(mySettings);
并且让MySettings最终从命令行,系统属性,app.properties等加载了其所有值。Spring中是否有某个类可以执行类似的操作,或者是否与应用程序上下文交织在一起?
显然,我可以自己加载Properties文件,但是我真的想让Spring Boot的逻辑始终使用命令行变量(例如–my.property1 =
xxx),系统变量,application.properties甚至是yaml文件作为。以及围绕轻松绑定和类型转换的逻辑(例如,property2是一个File),因此它们的工作方式与在Spring上下文中使用时完全相同。
可能还是梦想?
谢谢你的帮助!