很难理解,但是对于我的应用程序,必需的格式。我有一些在运行时包含的自定义库,因此它们不在春季应用程序上下文中。为了从Spring Boot应用程序中获取API,我捕获了所需的API,并将其倒入我的外部类。
显示一个示例:
HashValueService hashValueService
= (HashValueService) appContext.getBean("hashValueServiceImpl");
ServiceList srvList = new ServiceList();
srvList.setHashValueService(hashValueService);
通过这种方式,我可以访问我的数据库,该数据库在我的应用程序上下文中。
我在整个应用程序中分布了很多属性。因此,我想使用默认应用程序。专业属性在我的应用程序中经常使用的属性,例如keystore。
为此我编辑了应用程序。使用此行:
application.keystore=server.jks
但是,当然,春季@Value的使用确实显示了该属性的零,因为此类不在我的应用程序上下文中:
@Value("${application.keystore}")
private String keystore;
您是否有想法将此属性过渡到此客户库?也许创建一个新的属性文件应该有帮助吗?非常感谢你。
大多数弹簧魔术是由BeanPostProcessor
s完成的。很好地看一下它们 - 链接。
@Value
接线(以及更多)由AutowiredAnnotationBeanPostProcessor
执行,您可以将其用于您的目的:
AutowiredAnnotationBeanPostProcessor beanPostProcessor =
appContext.getBean(AutowiredAnnotationBeanPostProcessor.class);
ServiceList srvList = new ServiceList();
beanPostProcessor.processInjection(srvList);
之后,您的ServiceList
应该初始化String keystore
字段。