【问题标题】:How to configure Spring to load application.properties from outside of jar?如何配置 Spring 以从 jar 外部加载 application.properties?
【发布时间】:2015-11-27 01:02:38
【问题描述】:

我想要一个这样的目录结构:

/Directory
    - Application.jar
    - application.properties

这样我就可以更改属性而无需重新打包和重新部署(而只需重新启动 jar)。如何使用 spring 注释或配置类来实现这一点?

我不是在询问我的 Web 应用程序是否可以使用外部资源,我还希望更改 spring 加载 application.properties 文件的位置。

【问题讨论】:

标签: java spring spring-mvc properties resources


【解决方案1】:

你说的是 jar,所以你使用的是 Spring Boot?

如果是这样,同一目录中的外部 application.properties(结构就像你描述的那样)将覆盖 jar 文件中打包的 application.properties。

然后,如果您的 application.properties 中有 key=value 之类的内容,您可以使用 @Value("${key}") String key 将其注入您的代码中。

试试吧,它会起作用的:)

【讨论】:

  • JAR 中没有 application.properties 会抛出异常。还需要设置 WorkingDirectory,以便可以在 level=0 (./application.properties) 中找到属性文件
【解决方案2】:

您可能想在 Spring 中探索 PropertyPlaceholderExplorer 类。此类提供了访问 jar/war 包外部属性文件的工具。还有一个简短的很好的教程here

【讨论】:

    【解决方案3】:

    如果你开始使用 Spring Boot(在某个阶段你肯定会)。你得到强大的configuration externalization features

    使用 Spring Boot,您的 applications.properties 会自动加载到 Spring Boot 上下文中,您可以使用 ${...} 占位符。

    您可以使用更现代的功能@ConfigurationProperties 将您的配置映射到 POJO。这个 POJO 甚至可以通过 Java EE 验证注解(例如 @NotNull)进行验证

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-07
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2015-08-27
      相关资源
      最近更新 更多