如何在Spring Boot应用程序中外部化i18n属性文件

4
我已经成功地将spring-boot配置文件(application.properties)外置到一个名为config的文件夹中,当我通过官方Spring文档https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html以Unix服务方式运行我的spring-boot应用程序时。
此外,我还有一些i18n messages.properties文件在我的src/main/resources文件夹中,我希望也能将它们外置到同样的config文件夹中,但我无法做到。我尝试了很多方法,比如使用spring.messages.basename,但不幸的是,它不起作用。
我正在使用最新版本的spring-boot,并使用默认i18n属性名称messages的自动配置模式。
我错过了什么???谢谢您的帮助。

我尝试过以下配置: spring.messages.basename=classpath:messages 或者 spring.messages.basename=classpath*:messages 假设Spring配置目录在类路径上。也许我错了? - Fabrice Deshayes
是的,配置文件或者任何在jar包之外的文件都不在类路径上。此外,基本名称应该是config/messages - M. Deinum
@M. Deinum 我尝试使用spring.messages.basename=config/messages,但 Spring 找不到翻译。 - Fabrice Deshayes
classpath:config/messages 是什么意思呢? - M. Deinum
spring.messages.basename=file:config/messages - Pavanraotk
3个回答

4

以下是需要注意的几点:

  1. classpath:message - 会查找嵌入式的message_xxx文件。
  2. classpath:/messageclasspath:message 的效果相同。
  3. file:message - 会查找JAR包外部的当前目录,例如./message_en.properties <- 这就是你要的。

  4. file:/message - 你必须将消息文件放在根目录“/”下才能使其正常工作。

  5. 如果需要与./config/application.properties一起放置在config文件夹中,请使用file:config/message


0

我认为,资源包默认是在类路径下的。因此不需要附加它,直接从类路径进入您的文件夹位置即可。

尝试这个:**假设您的配置文件在静态文件夹中

spring.messages.basename=static/config/messages


0

我认为你需要一个前导斜杠。

尝试: spring.messages.basename=classpath:/config/messages


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接