如何为非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应用程序的命令行上指定外部配置?

答案
很显然,如果您没有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起,我想有一个@PropertySource批注,您可以使用它从类路径中的文件或文件系统中的某些“位置”生成弹簧加载属性。 This article总结了此方法的用法,并比较了与常规的弹簧应用相反,弹簧靴套上有什么。 This也是一个很好的教程,涵盖了常规的spring特性。
  1. 春季生态系统之外的某些内容,但仍然有用:apache common configuration项目。有一些解决方法可以将其与spring应用程序集成,请参见here

以上是关于如何为非Spring Boot的Java应用程序指定外部配置文件的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Spring Boot 应用程序的 gradle 构建设置活动配置文件?

如何为 Spring Boot 应用程序配置端口

如何为具有 Spring Security 配置的 Spring Boot API 编写单元测试

如何为我的 Spring Boot webapp 选择 URL?

如何为 Spring Boot 应用程序设置自定义 Http 标头“服务器”

如何为 Spring Boot 应用程序配置嵌入式 Tomcat 虚拟主机?