很难理解,但我的应用程序需要一种格式。我有一些自定义库,它们包含在运行时,因此它们不在spring应用程序上下文中。为了从春季启动应用程序获取apis,我获取了所需的apis并将其上传到我的外部类。
举例:
HashValueService hashValueService
= (HashValueService) appContext.getBean("hashValueServiceImpl");
ServiceList srvList = new ServiceList();
srvList.setHashValueService(hashValueService);
通过这种方式,我可以访问我的应用程序上下文中的数据库。
我在整个应用程序中分发了很多属性。所以我想使用默认的application.properties来集中我的应用程序中常用的属性,比如密钥库。
为此我用这行编辑了application.properties:
application.keystore=server.jks
但是当然Spring的@Value的使用确实显示了该属性的null,因为这个类不在我的应用程序上下文中:
@Value("${application.keystore}")
private String keystore;
您是否有想要将此属性覆盖到此客户库?也许创建一个新的属性文件会有帮助吗?非常感谢你。
答案 0 :(得分:1)
Spring的大部分魔法由BeanPostProcessor
完成。好好看看他们 - link。
@Value
布线(以及更多)由AutowiredAnnotationBeanPostProcessor
执行,您可以将它用于您的目的:
AutowiredAnnotationBeanPostProcessor beanPostProcessor =
appContext.getBean(AutowiredAnnotationBeanPostProcessor.class);
ServiceList srvList = new ServiceList();
beanPostProcessor.processInjection(srvList);
之后,您的ServiceList
应初始化String keystore
字段。