- 名师讲坛:Java微服务架构实战(SpringBoot+SpringCloud+Docker+RabbitMQ)
- 李兴华
- 597字
- 2021-03-26 11:42:20
2.9 读取资源文件
在实际的项目开发中,资源文件不可或缺,因为所有的提示文字信息都要在资源文件中进行定义,而且资源文件是实现国际化技术的主要手段。如果想在SpringBoot里面进行资源文件的配置,只需要做一些简单的application.yml配置即可,而且所有注入的资源文件都可以像最初的Spring处理那样,直接使用MessageSource进行读取。
1.【mldnboot-base项目】在src/main/resources源文件夹下创建一个i18n的子目录(包)。
2.【mldnboot-base项目】建立src/main/resources/i18n/Messages.properties文件,文件内容定义如下:
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P30_10826.jpg?sign=1739501276-EsIw69bzcywqBTONDEYqz4OoeVdWlagI-0-d118053fcbfc276eec936881933607e3)
3.【mldnboot-base项目】修改application.yml配置文件,追加资源文件配置,项目结构如图2-11所示。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P30_10828.jpg?sign=1739501276-ODca1q8P7B71ugsq87s5CRSEIZmOAG2b-0-d0f977b982d8e40ae9b35003aa2544b8)
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P30_1227.jpg?sign=1739501276-188iBaV3AVkzGN8S6IzSQg4RW6K6VpKu-0-15ab121dd470fd3507806d02210e82c2)
图2-11 资源文件配置
4.【mldnboot-base项目】在MessageController控制器中注入org.springframework.context.MessageSource接口对象,并且利用此对象实现资源文件读取。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P31_10832.jpg?sign=1739501276-nrb4Dc8q3J3TbxazU1kUWi6Vqf5ILoN1-0-06240bdd4bf63bf77e800edd6e3f9dac)
当程序中配置了资源文件之后,就可以通过MessageSource接口中提供的getMessage()方法进行资源的读取。本程序的运行效果如图2-12所示。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P31_1346.jpg?sign=1739501276-ViYgB6ccB5wcpaCSX18gurG5g8j5kuNx-0-9f0a1c8638b5763bc7984b95427f35f4)
图2-12 读取资源文件
提示:可以借用此机制实现国际化开发。
当程序可以实现资源文件读取的时候,就意味着可以实现国际化开发处理了。可以发现,MessageSource接口中的getMessage()方法里面需要接收一个Locale类的对象,此时就可以通过Locale类的设置来获取不同的资源文件。当然,也需要在项目中配置好不同语言的资源文件。例如,本程序在src/main/resources/i18n目录中又创建了Messages_zh_CN.properties和Messages_en_US.properties(注意baseName的名称相同),如图2-13所示。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P31_1348.jpg?sign=1739501276-tj01iATPwFV2B8IrqU4cGaE9nTD0BSyw-0-3b5673e9ee3aae3054ef4411d835603f)
图2-13 国际化配置
这样,当读取时可以采用不同的Locale对象实现指定语言的资源读取。例如,使用如下代码就可以实现Messages_en_US.properties资源文件的读取:
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P31_10838.jpg?sign=1739501276-f0epWMWz0ALxQthpn29OhruK7NA3Z9ZT-0-9b53b9f59f9236738f50afe472768a3d)
需要提醒读者的是,即使提供了不同语言的资源文件,在SpringBoot中也依然需要提供Messages.properties配置文件,否则将无法实现资源文件的读取。