SpringBoot中MessageSource国际化组件的执行原理及源码解析是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1894个文字,预计阅读时间需要8分钟。
文章介绍了SpringBoot中的国际化组件MessageSource及其使用,本文将探讨ResourceBundleMessageSource和ReloadableResourceBundleMessageSource的执行逻辑。
前文介绍了 SpringBoot 中的国际化组件 MessageSource 的使用,本章我们一起看下 ResourceBundleMessageSource 和 ReloadableResourceBundleMessageSource 的执行逻辑。SpringBoot 的 MessageSource 组件有很多抽象化,源码看起来比较分散,所以本文会通过流程图的方式进行讲解。
配置文件
配置文件是基础,会影响执行逻辑,我们先来看下配置项:
- basename:加载资源的文件名,可以多个资源名称,通过逗号隔开,默认是“messages”;
- encoding:加载文件的字符集,默认是 UTF-8,这个不多说;
- cacheDuration:文件加载到内存后缓存时间,默认单位是秒。如果没有设置,只会加载一次缓存,不会自动更新。这个参数在 ResourceBundleMessageSource、ReloadableResourceBundleMessageSource 稍微有些差异,会具体说下。
- fallbackToSystemLocale:这是一个兜底开关。默认情况下,如果在指定语言中找不到对应的值,会从 basename 参数(默认是 messages.properties)中查找,如果再找不到可能直接返回或抛错。
本文共计1894个文字,预计阅读时间需要8分钟。
文章介绍了SpringBoot中的国际化组件MessageSource及其使用,本文将探讨ResourceBundleMessageSource和ReloadableResourceBundleMessageSource的执行逻辑。
前文介绍了 SpringBoot 中的国际化组件 MessageSource 的使用,本章我们一起看下 ResourceBundleMessageSource 和 ReloadableResourceBundleMessageSource 的执行逻辑。SpringBoot 的 MessageSource 组件有很多抽象化,源码看起来比较分散,所以本文会通过流程图的方式进行讲解。
配置文件
配置文件是基础,会影响执行逻辑,我们先来看下配置项:
- basename:加载资源的文件名,可以多个资源名称,通过逗号隔开,默认是“messages”;
- encoding:加载文件的字符集,默认是 UTF-8,这个不多说;
- cacheDuration:文件加载到内存后缓存时间,默认单位是秒。如果没有设置,只会加载一次缓存,不会自动更新。这个参数在 ResourceBundleMessageSource、ReloadableResourceBundleMessageSource 稍微有些差异,会具体说下。
- fallbackToSystemLocale:这是一个兜底开关。默认情况下,如果在指定语言中找不到对应的值,会从 basename 参数(默认是 messages.properties)中查找,如果再找不到可能直接返回或抛错。

