Springboot使用MessageSource读取资源文件

摘要:
1服务器。port=808123#定义资源文件,10importrg。弹簧框架。网状物绑定注释。RestController;

1、项目开发过程中的提示文字信息可以在资源文件中进行定义,而且资源文件是实现国际化技术的主要手段。如果想在SpringBoot里面进行资源文件的配置,只需要做一些简单的application.yml配置即可,而且所有注入的资源文件都可以像最初的Spring处理那样,直接使用MessageSource进行读取。

首先,在src/main/resources源文件夹下创建一个i18n的子目录(包),然后创建src/main/resources/i18n/Messages.properties文件,然后输入自己的提示信息。

1 springboot.url=www.bie.com
2 springboot.msg=欢迎{0}光临!

然后,修改application.yml配置文件,追加资源文件配置,如下所示:

1 server.port=8081
2 
3 # 定义资源文件,多个资源文件使用逗号进行分割
4 spring.messages.basename=i18n/Messages 

项目结构,如下所示:

Springboot使用MessageSource读取资源文件第1张

编写测试程序,如下所示:

 1 package org.springboot.tentent.controller;
 2 
 3 import java.util.HashMap;
 4 import java.util.Locale;
 5 import java.util.Map;
 6 
 7 import org.springframework.beans.factory.annotation.Autowired;
 8 import org.springframework.context.MessageSource;
 9 import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.bind.annotation.RestController;
11 
12 @RestController
13 public class SampleController {
14 
15     // 利用该对象实现资源文件的读取
16     @Autowired
17     private MessageSource messageSource;
18 
19     @RequestMapping(value = "/message")
20     public Map<String, String> message() {
21         Map<String, String> map = new HashMap<String, String>();
22         // 当程序中配置了资源文件之后,就可以通过MessageSource接口中提供的getMessage()方法进行资源的读取
23         map.put("springboot.url:", this.messageSource.getMessage("springboot.url", null, Locale.getDefault()));
24         map.put("springboot.msg:",
25                 this.messageSource.getMessage("springboot.msg", new Object[] { "哈哈哈" }, Locale.getDefault()));
26         return map;
27     }
28 
29 }

运行效果,如下所示:

Springboot使用MessageSource读取资源文件第2张

2、可以使用此机制实现国际化开发,当程序可以实现资源文件读取的时候,就意味着可以实现国际化开发处理了。可以发现,MessageSource接口中的getMessage()方法里面需要接收一个Locale类的对象,此时就可以通过Locale类的设置来获取不同的资源文件。当然,也需要在项目中配置好不同语言的资源文件。例如,本程序在src/main/resources/i18n目录中又创建了Messages_zh_CN.properties和Messages_en_US.properties(注意baseName的名称相同)。

1 springboot.url=www.bie.com
2 springboot.msg=欢迎{0}光临!
1 springboot.url=www.bie.com
2 springboot.msg=welcome to {0} here!

项目结构,如下所示:

Springboot使用MessageSource读取资源文件第3张

测试案例,如下所示:

 1 package org.springboot.tentent.controller;
 2 
 3 import java.util.HashMap;
 4 import java.util.Locale;
 5 import java.util.Map;
 6 
 7 import org.springframework.beans.factory.annotation.Autowired;
 8 import org.springframework.context.MessageSource;
 9 import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.bind.annotation.RestController;
11 
12 @RestController
13 public class SampleController {
14 
15     // 利用该对象实现资源文件的读取
16     @Autowired
17     private MessageSource messageSource;
18 
19     @RequestMapping(value = "/message")
20     public Map<String, String> message() {
21         Map<String, String> map = new HashMap<String, String>();
22         // 当程序中配置了资源文件之后,就可以通过MessageSource接口中提供的getMessage()方法进行资源的读取
23         map.put("springboot.url", this.messageSource.getMessage("springboot.url", null, Locale.getDefault()));
24         map.put("springboot.msg",
25                 this.messageSource.getMessage("springboot.msg", new Object[] { "哈哈哈" }, new Locale("en", "US")));
26         
27         System.out.println(map.get("springboot.msg"));
28         // 采用不同的Locale对象实现指定语言的资源读取
29         map.put("springboot.msg",
30                 this.messageSource.getMessage("springboot.msg", new Object[] { "哈哈哈" }, new Locale("zh", "CN")));
31         
32         System.out.println(map.get("springboot.msg"));
33         return map;
34     }
35 
36 }

注意:即使提供了不同语言的资源文件,在SpringBoot中也依然需要提供Messages.properties配置文件,否则将无法实现资源文件的读取。

1 server.port=8081
2 
3 # 定义资源文件,多个资源文件使用逗号进行分割
4 spring.messages.basename=i18n/Messages,i18n/Messages_en_US,i18n/Messages_zh_CN

免责声明:文章转载自《Springboot使用MessageSource读取资源文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇fs 文件模块地理空间距离计算及优化(依据两个点经纬度计算距离)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sublime text3 搭建c++/c环境

sublime搭建的c++/c使用很方便,实用性很强,自己阅览了无数的博客,csdn,博客园的都看了,最后还是自己摸索着搭建成功了,如果觉得还不错请给个评论谢谢。(提前声明本人专利不允许转载!!!!) 转载备注地址:https://www.cnblogs.com/luhongkai/p/9812851.html 一、配置环境 大部分都是下载安装MinGW文...

简单应用复旦FNLP自然语言处理工具(一)

FNLP是一个基于机器学习的中文自然语言文本处理的开发工具包,FNLP主要是为中文自然语言处理而开发的工具包,也包含为实现这些任务的机器学习算法和数据集。                                                      ----------百度百科 信息检索 文本分类 新闻聚类 中文处理: 中文分词 词性标注...

Golang中的插件开发

  插件化开发提供了很多便利,可动态扩展程序的相关功能,如Windows中的DLL、Linux中的So文件、还有IDEA中的插件,应用范围不可谓不广;   在Golang中提供了自己的插件机制,可使用其进行插件化开发;在Golang的plugin包中提供了加载插件、调用插件中函数的相关方法; Golang中的插件机制使用非常简单;就只有这么三步:   1、...

php的CodeIgniter学习笔记(一)

1,URL Rewrite问题。 一开始,我们的URL是像这样: http://127.0.0.1:8099/works/ci/index.php/blog/ 要变成这样 http://127.0.0.1:8099/works/ci/index/blog/ , 只要像官方说的把.htaccess文件加到根目录里,并在.htaccess加入以下规则就好。 R...

二、windows下使用git拉取github上的项目(通过设置ssh key方式)

一、windows下使用git拉取github上的项目 1、创建仓库 说明:  2、打开git bash  3、使用ssh-keygen命令生成自己的公钥和私钥 首先输入ssh-keygen,这里会提示你输入私钥保存的位置,直接回车使用默认位置即可,  后面会两次提示输入密码 直接回车  这里标红的两个文件 id_rsa和id_rsa.pub分别...

Parquet与ORC:高性能列式存储格式(收藏)

背景 随着大数据时代的到来,越来越多的数据流向了Hadoop生态圈,同时对于能够快速的从TB甚至PB级别的数据中获取有价值的数据对于一个产品和公司来说更加重要,在Hadoop生态圈的快速发展过程中,涌现了一批开源的数据分析引擎,例如Hive、Spark SQL、Impala、Presto等,同时也产生了多个高性能的列式存储格式,例如RCFile、ORC、P...