【问题标题】:spring @value use with properties file outside executable jarspring @value 与可执行 jar 外部的属性文件一起使用
【发布时间】:2018-10-01 09:37:29
【问题描述】:

我想配置和加载属性文件,使其不包含在 jar 中。
如何将 props 文件加载到与 jar 而不是类路径相同的位置?

现有配置如下。

xml设置
<util:properties id="mainProps" location="classpath:config.properties" />

java代码
@Value("#{mainProps['message.timeout']}") private Long timeout;

我可以修改 spring util 设置以保留使用吗?
或者它可以以其他方式使用吗?

【问题讨论】:

  • 使用FileInputStream读取与jar(外部jar)并行的文件,然后使用Properties类具有load()方法,该方法采用File对象并返回Properties对象。
  • 或者你甚至可以使用 <util:properties id="mainProps" location="file:d:/config.properties"/> 考虑到你在 D:\ 驱动器上有 config.properties
  • @Amogh 首先,感谢您的反馈。如果你使用第二个file: d: /config.properties ",你不能使用相对路径而不把它放在d: 中吗?就像在看 jar 一样的路径
  • 第一种方法呢?
  • @Amogh 第一种方法需要修改的地方太多了。

标签: java spring spring-boot properties


【解决方案1】:

您可以使用@Amogh 提到的<util:properties id="mainProps" location="file:<full path to file>"/>

如果您不想在 XML 文件中使用完整路径,或者不同 PC 上的路径可能不同,您可以在指向该配置文件的 PC 上创建环境变量(如 PATH_TO_CONFIG)并使用它

@Value("#{environment.PATH_TO_CONFIG}")<util:properties id="mainProps" location="file#{environment['PATH_TO_CONFIG']}"/>

【讨论】:

  • 是否可以将其用作相对路径,因为它也在linux中使用?就像./config.properties 被读取为相同位置的绝对路径
  • 哦抱歉.. location="file:./config.properties" 解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 2012-04-25
  • 2017-12-15
  • 1970-01-01
  • 2016-04-03
  • 2023-03-20
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
相关资源
最近更新 更多