ApplicationContext 六大接口之MessageS
知识边界
MessageSource家族
衍生点
- MessageSourceResolvable
MessageSource类图结构
MessageSource.png
MessageSource
解析消息的策略接口,用于消息的参数化和国际化的支持。
Spring提供了两种开箱即用的产品实现。
ResourceBundleMessageSource 建立在ResourceBundle的标准之上。
ReloadableResourceBundleMessageSource 高度可配置,特别是在重新加载消息定义方面。
MessageSource类结构.png
HierarchicalMessageSource
MessageSource的子接口由能够分层解析消息的对象实现。
MessageSourceSupport
messageSource实现的基类,提供了对MessageFormat处理等基础设施的支持,但没有实现messageSource中定义的具体方法。
image.png
基类中提供了MessageFormat的缓存。以及是否使用MessageFormat的开关。
DelegatingMessageSource
如果上下文没有定义自己的MessageSource,则由AbstractApplicationContext用作占位符。不打算在应用程序中直接使用。
DelegatingMessageSource类结构.png
AbstractMessageSource
HierarchicalMessageSource接口的抽象实现类,实现了消息的一般处理。使得实现具体MessageSource变得容易。
子类必须实现抽象的resolveCode方法。
AbstractMessageSource类结构.png
StaticMessageSource
MessageSource 接口的简单实现。它允许程序注册接口,支持基本的国际化。
用于测试而不是在产品系统中使用。
StaticMessageSource类结构.png
AbstractResourceBasedMessageSource
MessageSource基于资源绑定的抽象基类。他的子类有ResourceBundleMessageSource和ReloadableResourceBundleMessageSource,提供了通用的配置方法和语义学的定义。
AbstractResourceBasedMessageSource类结构.png
ResourceBundleMessageSource
此MessageSource缓存被访问的ResourceBundle实例和为每个消息生成的消息格式。它还实现了不使用MessageFormat的无参数消息的呈现,这是AbstractMessageSource基类所支持的。此MessageSource提供的缓存比的ResourceBundle内置缓存快得多。
ResourceBundleMessageSource类结构.png