我正试图将我的点火配置外部化到我的春季启动应用程序中,这样就可以在不重建jar的情况下更改配置。
以前,该文件位于src/main/regroup中,并通过注释加载。
@ImportResource("IgniteConfig.xml") and
@Autowired
private IgniteConfiguration cfg;
当我将IgniteConfig.xml移动到位于excutable jar旁边的config文件夹时,上面的操作停止了,我尝试了以下操作,但没有成功:
使用--spring.config.location参数。我可以看出,这是在运行时其他配置工作时发现的,但上面的ImportResource注释表示找不到IgniteConfig.xml文件。
使用Ignition.start的相对路径(例如./config.InitionConfig.xml(。我使用此相对路径在日志中打印xml文件的文件内容,但当我将其传递给Ignition.start.时,它表示找不到该文件。我尝试过使用相对路径和绝对路径来实现这一点。
手动创建ApplicationContext并按bean名称获取配置。
ApplicationContext context = new ClassPathXmlApplicationContext("./config/IgniteConfig.xml");
这再次抱怨文件不存在,尽管我可以直接打开文件看到:
File igniteConfigFile = new File("./config/IgniteConfig.xml");
孔奇在这篇文章中的评论回答了我的问题:
"如果您想导入类路径之外的资源,语法为:
@ImportResource( { "file:path/spring-context1.xml", "file:path/spring-context2.xml" } )
">
在我的情况下,我只需要做:
@ImportResource( { "file:./config/IgniteConfig.xml" } )