如何为非Spring Boot的Java应用程序指定外部配置文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为非Spring Boot的Java应用程序指定外部配置文件相关的知识,希望对你有一定的参考价值。
背景
我已经使用kotlin和gradle构建了一个控制台Java应用程序。gradle文件创建了一个胖子罐,我可以使用以下命令从命令行运行它java -jar <project>.jar
该jar包含从中读取属性的application.properties文件。
问题
我想在命令行上指定应从某个外部路径读取application.properties文件。使用弹簧靴时,我用过
java -jar -Dspring.config.location=somepath/application.properties <project>.jar
这可行。但它似乎不能在非春季启动应用程序中工作]
问题
是否可以在非Spring Boot应用程序的命令行上指定外部配置?
您应该决定的第一件事-您需要在哪个级别将配置集成到应用程序中:
- 您只想从命令行中读取键/值还是要依赖于环境变量或系统属性?
通常,您的配置来源是什么:Yaml?属性文件?可能是领事或其他。
您是否要创建一个反映已读配置的Java对象(例如在Spring Boot中用
@ConfigurationProperties
注释的类?您只想支持一种配置源还是要支持各种配置源?
如果您使用Spring进行商品交易,是否希望将配置属性自动注入到bean中?
如果您打算使用properties / yaml(如Spring Boot中的
application.properties
)-您要将它们放置在哪里?非Spring Boot应用程序不会“自动”读取它们,您必须实现此逻辑。您是否打算处理配置文件(非spring-boot应用程序仍然支持根据指定的配置文件加载不同bean的风格。
] >>- Spring Boot已经回答了所有这些问题,甚至更多。
如果您在Spring Boot上下文之外运行但仍具有Spring应用程序,则可能要尝试以下一些选项:
- 自从Spring 3.1起,我想有一个
春季生态系统之外的某些内容,但仍然有用:apache common configuration项目。有一些解决方法可以将其与spring应用程序集成,请参见here
@PropertySource
批注,您可以使用它从类路径中的文件或文件系统中的某些“位置”生成弹簧加载属性。 This article总结了此方法的用法,并比较了与常规的弹簧应用相反,弹簧靴套上有什么。 This也是一个很好的教程,涵盖了常规的spring特性。以上是关于如何为非Spring Boot的Java应用程序指定外部配置文件的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Spring Boot 应用程序的 gradle 构建设置活动配置文件?
如何为具有 Spring Security 配置的 Spring Boot API 编写单元测试
如何为我的 Spring Boot webapp 选择 URL?