【问题标题】:Spring Maven: Where to place credential propertiesSpring Maven:放置凭证属性的位置
【发布时间】:2015-12-21 21:13:06
【问题描述】:

我目前正在开发一个需要使用凭据访问 API 的应用程序。我不想将它们硬编码到应用程序中,所以我为它们创建了一个 configuration.properties 文件。

目前该文件位于 src/main/resources 并使用以下代码访问它。

<context:property-placeholder location="classpath:configuration.properties" ignore-unresolvable="true" />

这意味着如果我更改配置中的某些内容,我需要重新部署 WAR。

我的问题是:我应该把这个配置文件放在哪里,以便在配置发生变化时不需要重新部署?

我不想将它随意放在我的计算机上,这样我就可以与其他人共享我的代码,而不必担心文件的位置。

【问题讨论】:

    标签: java spring maven tomcat properties


    【解决方案1】:

    我通过将我的属性文件放在 Tomcat "D:\Documents\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps" 中解决了这个问题

    并使用以下属性占位符访问它

    <context:property-placeholder location="file:${catalina.base}/conf/configuration.properties" ignore-unresolvable="true" />
    

    【讨论】:

    • 好吧,这缺乏一点舒适感。我不会将应用程序配置存储在 tomcat/conf 中——以防你升级 tomcat 或在 eclipse 中创建另一个服务器。您可以做的是将基本文件夹传递到 spring: 并将 conf.home 作为 -Dconf.home=" /my/path/to/conf" 进入应用程序。这样,应该可以将文件放在项目中,并通过 IDE 将其路径传递到应用程序中(这应该避免在 wtpwebapps 等 eclipse 内部文件夹中进行挖掘)
    • 就是这样。
    【解决方案2】:

    我想你已经很接近了。

    我同意拥有一个 .war 文件并在任何地方重复使用它而不将其应用于特定环境的好方法。这意味着您不能将其包含在 .war 中

    我要做的是使用程序集插件创建配置 zip 文件(如果有多种变体)。例如来自 /src/main/config/env1

    然后使用环境变量指向该文件夹。 spring 中的属性占位符配置器然后通过该系统属性而不是类路径引用该位置:

    这些 zip 文件可用于与 .war 文件一起部署(通过 ssh 使用 ant runner 插件或其他方式)

    这也可以用于日志配置。 Spring 有一个解析器,如果您在文件系统上更改它,它甚至会重新加载日志配置。

    【讨论】:

    • 感谢您的明确答复。目前我已经解决了它,但如果我没有。这将是要走的路!我将发布我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2023-03-12
    • 2011-11-02
    • 1970-01-01
    • 2017-09-15
    • 2017-11-07
    • 2021-05-10
    相关资源
    最近更新 更多