Spring Boot 国际化(MessageSource)- 路径配置之坑

脑洞大开,想着把项目老框架换成Spring Boot,在使用MessageSource进行国际化改造时遇神坑了(始终报:org.springframework.context.NoSuchMessageException: No message found under code ‘hello’ for locale ‘null’.)。。。网上搜了一堆,说的很粗糙,最后debug了源码才发现问题还是出在文件路径上。

  • 基于默认配置实现国际化

Spring Boot默认已经支持国际化了,即不做任何配置也可使用。

1、国际化文件路径(重点):
a、文件放在 src/main/resource 根目录下,不要有其它目录;
b、文件名必须以 messages 开头;如下图:
Spring Boot 国际化(MessageSource)- 路径配置之坑_第1张图片

2、在需要使用的类里注入 messageSource 对象:

	@Autowired
	private MessageSource messageSource;

3、调用:

    String x = messageSource.getMessage("hello", null, null);
	System.out.println(x);
  • 自定义国际化配置

很多时候我们要修改自动配置中的某些配置参数,例如messages.properties文件所在的文件夹路径、properties文件的编码格式等等,可以用以下两种方式进行配置修改:
1、使用配置文件(下方例子使用该方式);
2、修改Bean,直接返回一个配置Bean ;

1、国际化文件路径(重点):
a、在 application.yml 配置文件中加上下图右侧代码;
b、在 src/main/resource 根目录下新建META-INF/i18n目录;
c、basename属性后面的messages,不是目录,是文件名前缀;如下图:
Spring Boot 国际化(MessageSource)- 路径配置之坑_第2张图片
2、其它步骤同上2、3

你可能感兴趣的:(疑难杂症)